Return to article

Оптимизация асинхронных операций в .NET

Таблица 1 - Результаты тестирования реализаций функции Аккермана

Метод

Число рек.  вызовов

m

n

Средн. арифм., нс.

Станд. откл., нс.

Кол-во сборок мусора в Gen0 на 1000 операций

Кол-во выделяемой памяти в куче за 1 вызов метода, байт

Baseline

4

1

1

3,506

0,0902

-

-

ValueTask

76,036

2,2531

-

-

IValueTaskSource

378,316

11,3795

0,0877

368

Task

50,700

1,0317

-

-

Baseline

6

1

2

7,313

0,0782

-

-

ValueTask

106,601

6,3150

-

-

IValueTaskSource

503,147

28,4584

0,1354

568

Task

65,809

2,1491

-

-

Baseline

8

1

3

8,576

0,2664

-

-

ValueTask

136,545

3,2220

-

-

IValueTaskSource

678,346

19,3167

0,1831

768

Task

89,820

2,4432

-

-

Baseline

14

2

1

18,519

0,6279

-

-

ValueTask

270,178

7,9779

-

-

IValueTaskSource

1221,201

29,1151

0,3242

1360

Task

163,981

5,7236

-

-

Baseline

27

2

2

36,497

0,6551

-

-

ValueTask

482,350

11,3347

-

-

IValueTaskSource

3009,284

60,8933

0,6599

3376

Task

352,306

7,8184

-

-

Baseline

44

2

3

57,001

0,7175

-

-

ValueTask

814,358

28,9962

-

-

IValueTaskSource

4343,942

172,8679

1,5030

6296

Task

569,717

13,4053

0,0515

216

Baseline

106

3

1

135,360

1,1921

-

-

ValueTask

1961,375

62,9385

-

-

IValueTaskSource

10705,974

446,4759

4,0436

16937

Task

1534,464

40,6479

0,3777

1584

Baseline

541

3

2

674,350

5,9826

-

-

ValueTask

9459,547

181,8086

 

 

IValueTaskSource

66247,500

5013,7841

21,8506

91701

Task

9222,128

378,4115

4,7455

19872

Baseline

2432

3

3

3293,043

44,9792

-

-

ValueTask

44116,709

1783,5449

-

-

IValueTaskSource

414282,242

17464,7995

96,6797

416848

Task

46579,047

1897,1332

30,3345

126864