Skip to content

Commit 13e813d

Browse files
author
electricessence
committed
Revisions to pools
Less redundancy and more reuse of interlocking code. OptimisticArrayObjectPool now appropriately inherits from InterlockedArrayObjectPool.
1 parent d9abf60 commit 13e813d

15 files changed

Lines changed: 559 additions & 387 deletions

benchmarking/BenchmarkResult.csv

Lines changed: 36 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,37 @@
11
Batch,Pool Type," From Empty (In Parallel)"," To (In Parallel)",d Read/Write (In Parallel),y Pool (.TryTake()),L,
2-
Repeat 200000 for size 4,QueueObjectPool,00:00:00.8064961,00:00:00.7379976,00:00:00.7372226,00:00:00.0912138,00:00:02.3729301,
3-
Repeat 200000 for size 4,ConcurrentQueueObjectPool,00:00:00.8392163,00:00:00.8090963,00:00:00.8090662,00:00:00.1057385,00:00:02.5631173,
4-
Repeat 200000 for size 4,OptimisticArrayObjectPool,00:00:00.8582319,00:00:00.7316954,00:00:00.7462951,00:00:00.0322101,00:00:02.3684325,
5-
Repeat 80000 for size 10,QueueObjectPool,00:00:00.4891898,00:00:00.4641127,00:00:00.4325487,00:00:00.0887330,00:00:01.4745842,
6-
Repeat 80000 for size 10,ConcurrentQueueObjectPool,00:00:00.4774220,00:00:00.4532694,00:00:00.4577644,00:00:00.1030334,00:00:01.4914892,
7-
Repeat 80000 for size 10,OptimisticArrayObjectPool,00:00:00.5075819,00:00:00.3865528,00:00:00.4139942,00:00:00.0178275,00:00:01.3259564,
8-
Repeat 24000 for size 50,QueueObjectPool,00:00:00.2172210,00:00:00.4786407,00:00:00.2498973,00:00:00.1187320,00:00:01.0644910,
9-
Repeat 24000 for size 50,ConcurrentQueueObjectPool,00:00:00.2130298,00:00:00.2258805,00:00:00.2090524,00:00:00.1446890,00:00:00.7926517,
10-
Repeat 24000 for size 50,OptimisticArrayObjectPool,00:00:00.3218326,00:00:00.1749609,00:00:00.1948959,00:00:00.0136129,00:00:00.7053023,
11-
Repeat 16000 for size 100,QueueObjectPool,00:00:00.1933122,00:00:01.1807893,00:00:00.3700023,00:00:00.1532743,00:00:01.8973781,
12-
Repeat 16000 for size 100,ConcurrentQueueObjectPool,00:00:00.1885421,00:00:00.2231642,00:00:00.1945119,00:00:00.1892646,00:00:00.7954828,
13-
Repeat 16000 for size 100,OptimisticArrayObjectPool,00:00:00.4629300,00:00:00.1296838,00:00:00.2026568,00:00:00.0155329,00:00:00.8108035,
14-
Repeat 25600 for size 250,QueueObjectPool,00:00:00.5119740,00:00:03.6755755,00:00:03.0652345,00:00:00.5573299,00:00:07.8101139,
15-
Repeat 25600 for size 250,ConcurrentQueueObjectPool,00:00:00.5032784,00:00:00.6586173,00:00:00.5488527,00:00:00.7357870,00:00:02.4465354,
16-
Repeat 25600 for size 250,OptimisticArrayObjectPool,00:00:03.0809331,00:00:00.3488741,00:00:00.7180123,00:00:00.0531776,00:00:04.2009971,
17-
Repeat 9600 for size 1000,QueueObjectPool,00:00:00.4419158,00:00:02.4529980,00:00:02.3464286,00:00:00.6892199,00:00:05.9305623,
18-
Repeat 9600 for size 1000,ConcurrentQueueObjectPool,00:00:00.4453723,00:00:00.6651569,00:00:00.5769710,00:00:00.8922154,00:00:02.5797156,
19-
Repeat 9600 for size 1000,OptimisticArrayObjectPool,00:00:13.4891871,00:00:00.2492917,00:00:01.1461595,00:00:00.0718376,00:00:14.9564759,
20-
,OptimisticArrayObjectPool,00:00:03.0074967,00:00:00.3465589,00:00:00.7164117,00:00:00.0529356,00:00:04.1234029,
21-
Repeat 25600 for size 250,ChannelObjectPool,00:00:04.8289131,00:00:05.0525342,00:00:02.7992174,00:00:00.4744166,00:00:13.1550813,
22-
Repeat 9600 for size 1000,QueueObjectPool,00:00:00.4429800,00:00:02.5445855,00:00:02.5696949,00:00:00.7169192,00:00:06.2741796,
23-
Repeat 9600 for size 1000,ConcurrentQueueObjectPool,00:00:00.4447846,00:00:00.6793450,00:00:00.5848884,00:00:00.9255401,00:00:02.6345581,
24-
Repeat 9600 for size 1000,OptimisticArrayObjectPool,00:00:13.5246195,00:00:00.2524943,00:00:01.1490467,00:00:00.0721550,00:00:14.9983155,
25-
Repeat 9600 for size 1000,ChannelObjectPool,00:00:03.0021715,00:00:03.3152862,00:00:01.8869001,00:00:00.5896046,00:00:08.7939624,
26-
1264,00:00:00.4388072,00:00:00.0009975,00:00:01.1470602,
27-
Repeat 4800 for size 4000,QueueObjectPool,00:00:00.7134197,00:00:03.7582117,00:00:03.1855656,00:00:01.2950620,00:00:08.9522590,
28-
Repeat 4800 for size 4000,ConcurrentQueueObjectPool,00:00:00.7232603,00:00:01.2258140,00:00:01.0573101,00:00:01.6096397,00:00:04.6160241,
29-
Repeat 4800 for size 4000,OptimisticArrayObjectPool,00:00:00.6968814,00:00:00.3086700,00:00:00.5845562,00:00:00.0007690,00:00:01.5908766,
30-
Repeat 4800 for size 4000,InterlockedArrayObjectPool,00:00:00.6864968,00:00:00.3074012,00:00:00.6233171,00:00:00.0007314,00:00:01.6179465,
31-
Repeat 2400 for size 8000,QueueObjectPool,00:00:00.7021946,00:00:03.5501399,00:00:02.5203758,00:00:01.2936158,00:00:08.0663261,
32-
Repeat 2400 for size 8000,ConcurrentQueueObjectPool,00:00:00.7088997,00:00:01.2280982,00:00:01.0299925,00:00:01.5836229,00:00:04.5506133,
33-
Repeat 2400 for size 8000,OptimisticArrayObjectPool,00:00:00.6956117,00:00:00.2895694,00:00:00.5699170,00:00:00.0004110,00:00:01.5555091,
34-
Repeat 2400 for size 8000,InterlockedArrayObjectPool,00:00:00.6782009,00:00:00.2871359,00:00:00.6188317,00:00:00.0003863,00:00:01.5845548,
2+
Repeat 200000 for size 4,QueueObjectPool,00:00:01.1287292,00:00:01.0294513,00:00:01.0260755,00:00:00.1590331,00:00:03.3432891,
3+
Repeat 200000 for size 4,ConcurrentQueueObjectPool,00:00:01.1514246,00:00:01.0375667,00:00:01.0105712,00:00:00.1741179,00:00:03.3736804,
4+
Repeat 200000 for size 4,ConcurrentStackObjectPool,00:00:01.0247996,00:00:00.9655175,00:00:00.9336741,00:00:00.1360451,00:00:03.0600363,
5+
Repeat 200000 for size 4,OptimisticArrayObjectPool,00:00:01.0468743,00:00:00.8456746,00:00:00.8382048,00:00:00.1628778,00:00:02.8936315,
6+
Repeat 80000 for size 10,QueueObjectPool,00:00:00.5433300,00:00:00.5461789,00:00:00.4759666,00:00:00.1333091,00:00:01.6987846,
7+
Repeat 80000 for size 10,ConcurrentQueueObjectPool,00:00:00.5099808,00:00:00.4864080,00:00:00.5001707,00:00:00.1520913,00:00:01.6486508,
8+
Repeat 80000 for size 10,ConcurrentStackObjectPool,00:00:00.5763228,00:00:00.5440804,00:00:00.5287139,00:00:00.1281674,00:00:01.7772845,
9+
Repeat 80000 for size 10,OptimisticArrayObjectPool,00:00:00.6038049,00:00:00.5263031,00:00:00.4762357,00:00:00.2268198,00:00:01.8331635,
10+
Repeat 24000 for size 50,QueueObjectPool,00:00:00.2580179,00:00:00.4086527,00:00:00.2688232,00:00:00.1734043,00:00:01.1088981,
11+
Repeat 24000 for size 50,ConcurrentQueueObjectPool,00:00:00.2592864,00:00:00.2647728,00:00:00.2407817,00:00:00.2021228,00:00:00.9669637,
12+
Repeat 24000 for size 50,ConcurrentStackObjectPool,00:00:00.2676966,00:00:00.3135490,00:00:00.2759068,00:00:00.2042573,00:00:01.0614097,
13+
Repeat 24000 for size 50,OptimisticArrayObjectPool,00:00:00.3239524,00:00:00.3545534,00:00:00.2256836,00:00:00.8061559,00:00:01.7103453,
14+
Repeat 16000 for size 100,QueueObjectPool,00:00:00.2503055,00:00:00.4926017,00:00:00.3241812,00:00:00.2220571,00:00:01.2891455,
15+
Repeat 16000 for size 100,ConcurrentQueueObjectPool,00:00:00.2482971,00:00:00.2783954,00:00:00.2356915,00:00:00.2691699,00:00:01.0315539,
16+
Repeat 16000 for size 100,ConcurrentStackObjectPool,00:00:00.2590476,00:00:00.3642821,00:00:00.3237909,00:00:00.3202590,00:00:01.2673796,
17+
Repeat 16000 for size 100,OptimisticArrayObjectPool,00:00:00.3215564,00:00:00.4745108,00:00:00.1784334,00:00:01.5867222,00:00:02.5612228,
18+
Repeat 25600 for size 250,QueueObjectPool,00:00:00.7252826,00:00:01.7557360,00:00:01.1939824,00:00:00.8119776,00:00:04.4869786,
19+
Repeat 25600 for size 250,ConcurrentQueueObjectPool,00:00:00.7722675,00:00:00.9039538,00:00:00.7259809,00:00:01.0339628,00:00:03.4361650,
20+
Repeat 25600 for size 250,ConcurrentStackObjectPool,00:00:00.7369296,00:00:01.5097271,00:00:01.5271033,00:00:01.7198474,00:00:05.4936074,
21+
Repeat 25600 for size 250,OptimisticArrayObjectPool,00:00:01.2872667,00:00:03.1949158,00:00:00.5262142,00:00:11.7748329,00:00:16.7832296,
22+
Repeat 14400 for size 500,QueueObjectPool,00:00:00.7797824,00:00:01.6503887,00:00:01.3768657,00:00:00.8861150,00:00:04.6931518,
23+
Repeat 14400 for size 500,ConcurrentQueueObjectPool,00:00:00.7994849,00:00:00.9658497,00:00:00.7778244,00:00:01.1149906,00:00:03.6581496,
24+
Repeat 14400 for size 500,ConcurrentStackObjectPool,00:00:00.7487525,00:00:02.3665267,00:00:02.6608263,00:00:03.0226290,00:00:08.7987345,
25+
Repeat 14400 for size 500,OptimisticArrayObjectPool,00:00:01.0892049,00:00:05.8599218,00:00:00.5797098,00:00:22.9215261,00:00:30.4503626,
26+
250,QueueObjectPool,00:00:00.7629885,00:00:01.7291545,00:00:01.2741500,00:00:00.8586163,00:00:04.6249093,
27+
Repeat 25600 for size 250,StackObjectPool,00:00:00.7604847,00:00:01.8116364,00:00:01.2369652,00:00:00.8626937,00:00:04.6717800,
28+
Repeat 25600 for size 250,ConcurrentQueueObjectPool,00:00:00.8566894,00:00:00.9466838,00:00:00.7795225,00:00:01.1284017,00:00:03.7112974,
29+
Repeat 25600 for size 250,ConcurrentStackObjectPool,00:00:00.7723668,00:00:01.5778130,00:00:01.6054224,00:00:01.7977731,00:00:05.7533753,
30+
Repeat 25600 for size 250,OptimisticArrayObjectPool,00:00:01.2503504,00:00:03.2370044,00:00:00.5303349,00:00:11.9466373,00:00:16.9643270,
31+
Repeat 25600 for size 250,InterlockedArrayObjectPool,00:00:01.2508355,00:00:06.3817155,00:00:00.8393488,00:00:14.9549267,00:00:23.4268265,
32+
Repeat 14400 for size 500,QueueObjectPool,00:00:00.7519294,00:00:01.5185357,00:00:01.3801529,00:00:00.8505885,00:00:04.5012065,
33+
Repeat 14400 for size 500,StackObjectPool,00:00:00.7628823,00:00:01.6182833,00:00:01.4624384,00:00:00.8960254,00:00:04.7396294,
34+
Repeat 14400 for size 500,ConcurrentQueueObjectPool,00:00:00.8285180,00:00:00.9902911,00:00:00.8006946,00:00:01.1172107,00:00:03.7367144,
35+
Repeat 14400 for size 500,ConcurrentStackObjectPool,00:00:00.6978419,00:00:02.2585037,00:00:02.4760289,00:00:02.8394301,00:00:08.2718046,
36+
Repeat 14400 for size 500,OptimisticArrayObjectPool,00:00:01.0721065,00:00:05.6089585,00:00:00.5478712,00:00:22.2804453,00:00:29.5093815,
37+
Repeat 14400 for size 500,InterlockedArrayObjectPool,00:00:01.1338229,00:00:12.8073240,00:00:00.7613453,00:00:32.4547747,00:00:47.1572669,

benchmarking/BenchmarkResult.txt

Lines changed: 133 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -2,149 +2,191 @@ Repeat 200000 for size 4
22
------------------------------------
33

44
QueueObjectPool.........................................
5-
00:00:00.8064961 Take From Empty (In Parallel)
6-
00:00:00.7379976 Give To (In Parallel)
7-
00:00:00.7372226 Mixed Read/Write (In Parallel)
8-
00:00:00.0912138 Empty Pool (.TryTake())
9-
00:00:02.3729301 TOTAL
5+
00:00:01.1287292 Take From Empty (In Parallel)
6+
00:00:01.0294513 Give To (In Parallel)
7+
00:00:01.0260755 Mixed Read/Write (In Parallel)
8+
00:00:00.1590331 Empty Pool (.TryTake())
9+
00:00:03.3432891 TOTAL
1010

1111
ConcurrentQueueObjectPool...............................
12-
00:00:00.8392163 Take From Empty (In Parallel)
13-
00:00:00.8090963 Give To (In Parallel)
14-
00:00:00.8090662 Mixed Read/Write (In Parallel)
15-
00:00:00.1057385 Empty Pool (.TryTake())
16-
00:00:02.5631173 TOTAL
12+
00:00:01.1514246 Take From Empty (In Parallel)
13+
00:00:01.0375667 Give To (In Parallel)
14+
00:00:01.0105712 Mixed Read/Write (In Parallel)
15+
00:00:00.1741179 Empty Pool (.TryTake())
16+
00:00:03.3736804 TOTAL
17+
18+
ConcurrentStackObjectPool...............................
19+
00:00:01.0247996 Take From Empty (In Parallel)
20+
00:00:00.9655175 Give To (In Parallel)
21+
00:00:00.9336741 Mixed Read/Write (In Parallel)
22+
00:00:00.1360451 Empty Pool (.TryTake())
23+
00:00:03.0600363 TOTAL
1724

1825
OptimisticArrayObjectPool...............................
19-
00:00:00.8582319 Take From Empty (In Parallel)
20-
00:00:00.7316954 Give To (In Parallel)
21-
00:00:00.7462951 Mixed Read/Write (In Parallel)
22-
00:00:00.0322101 Empty Pool (.TryTake())
23-
00:00:02.3684325 TOTAL
26+
00:00:01.0468743 Take From Empty (In Parallel)
27+
00:00:00.8456746 Give To (In Parallel)
28+
00:00:00.8382048 Mixed Read/Write (In Parallel)
29+
00:00:00.1628778 Empty Pool (.TryTake())
30+
00:00:02.8936315 TOTAL
2431

2532

2633
Repeat 80000 for size 10
2734
------------------------------------
2835

2936
QueueObjectPool.........................................
30-
00:00:00.4891898 Take From Empty (In Parallel)
31-
00:00:00.4641127 Give To (In Parallel)
32-
00:00:00.4325487 Mixed Read/Write (In Parallel)
33-
00:00:00.0887330 Empty Pool (.TryTake())
34-
00:00:01.4745842 TOTAL
37+
00:00:00.5433300 Take From Empty (In Parallel)
38+
00:00:00.5461789 Give To (In Parallel)
39+
00:00:00.4759666 Mixed Read/Write (In Parallel)
40+
00:00:00.1333091 Empty Pool (.TryTake())
41+
00:00:01.6987846 TOTAL
3542

3643
ConcurrentQueueObjectPool...............................
37-
00:00:00.4774220 Take From Empty (In Parallel)
38-
00:00:00.4532694 Give To (In Parallel)
39-
00:00:00.4577644 Mixed Read/Write (In Parallel)
40-
00:00:00.1030334 Empty Pool (.TryTake())
41-
00:00:01.4914892 TOTAL
44+
00:00:00.5099808 Take From Empty (In Parallel)
45+
00:00:00.4864080 Give To (In Parallel)
46+
00:00:00.5001707 Mixed Read/Write (In Parallel)
47+
00:00:00.1520913 Empty Pool (.TryTake())
48+
00:00:01.6486508 TOTAL
49+
50+
ConcurrentStackObjectPool...............................
51+
00:00:00.5763228 Take From Empty (In Parallel)
52+
00:00:00.5440804 Give To (In Parallel)
53+
00:00:00.5287139 Mixed Read/Write (In Parallel)
54+
00:00:00.1281674 Empty Pool (.TryTake())
55+
00:00:01.7772845 TOTAL
4256

4357
OptimisticArrayObjectPool...............................
44-
00:00:00.5075819 Take From Empty (In Parallel)
45-
00:00:00.3865528 Give To (In Parallel)
46-
00:00:00.4139942 Mixed Read/Write (In Parallel)
47-
00:00:00.0178275 Empty Pool (.TryTake())
48-
00:00:01.3259564 TOTAL
58+
00:00:00.6038049 Take From Empty (In Parallel)
59+
00:00:00.5263031 Give To (In Parallel)
60+
00:00:00.4762357 Mixed Read/Write (In Parallel)
61+
00:00:00.2268198 Empty Pool (.TryTake())
62+
00:00:01.8331635 TOTAL
4963

5064

5165
Repeat 24000 for size 50
5266
------------------------------------
5367

5468
QueueObjectPool.........................................
55-
00:00:00.2172210 Take From Empty (In Parallel)
56-
00:00:00.4786407 Give To (In Parallel)
57-
00:00:00.2498973 Mixed Read/Write (In Parallel)
58-
00:00:00.1187320 Empty Pool (.TryTake())
59-
00:00:01.0644910 TOTAL
69+
00:00:00.2580179 Take From Empty (In Parallel)
70+
00:00:00.4086527 Give To (In Parallel)
71+
00:00:00.2688232 Mixed Read/Write (In Parallel)
72+
00:00:00.1734043 Empty Pool (.TryTake())
73+
00:00:01.1088981 TOTAL
6074

6175
ConcurrentQueueObjectPool...............................
62-
00:00:00.2130298 Take From Empty (In Parallel)
63-
00:00:00.2258805 Give To (In Parallel)
64-
00:00:00.2090524 Mixed Read/Write (In Parallel)
65-
00:00:00.1446890 Empty Pool (.TryTake())
66-
00:00:00.7926517 TOTAL
76+
00:00:00.2592864 Take From Empty (In Parallel)
77+
00:00:00.2647728 Give To (In Parallel)
78+
00:00:00.2407817 Mixed Read/Write (In Parallel)
79+
00:00:00.2021228 Empty Pool (.TryTake())
80+
00:00:00.9669637 TOTAL
81+
82+
ConcurrentStackObjectPool...............................
83+
00:00:00.2676966 Take From Empty (In Parallel)
84+
00:00:00.3135490 Give To (In Parallel)
85+
00:00:00.2759068 Mixed Read/Write (In Parallel)
86+
00:00:00.2042573 Empty Pool (.TryTake())
87+
00:00:01.0614097 TOTAL
6788

6889
OptimisticArrayObjectPool...............................
69-
00:00:00.3218326 Take From Empty (In Parallel)
70-
00:00:00.1749609 Give To (In Parallel)
71-
00:00:00.1948959 Mixed Read/Write (In Parallel)
72-
00:00:00.0136129 Empty Pool (.TryTake())
73-
00:00:00.7053023 TOTAL
90+
00:00:00.3239524 Take From Empty (In Parallel)
91+
00:00:00.3545534 Give To (In Parallel)
92+
00:00:00.2256836 Mixed Read/Write (In Parallel)
93+
00:00:00.8061559 Empty Pool (.TryTake())
94+
00:00:01.7103453 TOTAL
7495

7596

7697
Repeat 16000 for size 100
7798
------------------------------------
7899

79100
QueueObjectPool.........................................
80-
00:00:00.1933122 Take From Empty (In Parallel)
81-
00:00:01.1807893 Give To (In Parallel)
82-
00:00:00.3700023 Mixed Read/Write (In Parallel)
83-
00:00:00.1532743 Empty Pool (.TryTake())
84-
00:00:01.8973781 TOTAL
101+
00:00:00.2503055 Take From Empty (In Parallel)
102+
00:00:00.4926017 Give To (In Parallel)
103+
00:00:00.3241812 Mixed Read/Write (In Parallel)
104+
00:00:00.2220571 Empty Pool (.TryTake())
105+
00:00:01.2891455 TOTAL
85106

86107
ConcurrentQueueObjectPool...............................
87-
00:00:00.1885421 Take From Empty (In Parallel)
88-
00:00:00.2231642 Give To (In Parallel)
89-
00:00:00.1945119 Mixed Read/Write (In Parallel)
90-
00:00:00.1892646 Empty Pool (.TryTake())
91-
00:00:00.7954828 TOTAL
108+
00:00:00.2482971 Take From Empty (In Parallel)
109+
00:00:00.2783954 Give To (In Parallel)
110+
00:00:00.2356915 Mixed Read/Write (In Parallel)
111+
00:00:00.2691699 Empty Pool (.TryTake())
112+
00:00:01.0315539 TOTAL
113+
114+
ConcurrentStackObjectPool...............................
115+
00:00:00.2590476 Take From Empty (In Parallel)
116+
00:00:00.3642821 Give To (In Parallel)
117+
00:00:00.3237909 Mixed Read/Write (In Parallel)
118+
00:00:00.3202590 Empty Pool (.TryTake())
119+
00:00:01.2673796 TOTAL
92120

93121
OptimisticArrayObjectPool...............................
94-
00:00:00.4629300 Take From Empty (In Parallel)
95-
00:00:00.1296838 Give To (In Parallel)
96-
00:00:00.2026568 Mixed Read/Write (In Parallel)
97-
00:00:00.0155329 Empty Pool (.TryTake())
98-
00:00:00.8108035 TOTAL
122+
00:00:00.3215564 Take From Empty (In Parallel)
123+
00:00:00.4745108 Give To (In Parallel)
124+
00:00:00.1784334 Mixed Read/Write (In Parallel)
125+
00:00:01.5867222 Empty Pool (.TryTake())
126+
00:00:02.5612228 TOTAL
99127

100128

101129
Repeat 25600 for size 250
102130
------------------------------------
103131

104132
QueueObjectPool.........................................
105-
00:00:00.5119740 Take From Empty (In Parallel)
106-
00:00:03.6755755 Give To (In Parallel)
107-
00:00:03.0652345 Mixed Read/Write (In Parallel)
108-
00:00:00.5573299 Empty Pool (.TryTake())
109-
00:00:07.8101139 TOTAL
133+
00:00:00.7252826 Take From Empty (In Parallel)
134+
00:00:01.7557360 Give To (In Parallel)
135+
00:00:01.1939824 Mixed Read/Write (In Parallel)
136+
00:00:00.8119776 Empty Pool (.TryTake())
137+
00:00:04.4869786 TOTAL
110138

111139
ConcurrentQueueObjectPool...............................
112-
00:00:00.5032784 Take From Empty (In Parallel)
113-
00:00:00.6586173 Give To (In Parallel)
114-
00:00:00.5488527 Mixed Read/Write (In Parallel)
115-
00:00:00.7357870 Empty Pool (.TryTake())
116-
00:00:02.4465354 TOTAL
140+
00:00:00.7722675 Take From Empty (In Parallel)
141+
00:00:00.9039538 Give To (In Parallel)
142+
00:00:00.7259809 Mixed Read/Write (In Parallel)
143+
00:00:01.0339628 Empty Pool (.TryTake())
144+
00:00:03.4361650 TOTAL
145+
146+
ConcurrentStackObjectPool...............................
147+
00:00:00.7369296 Take From Empty (In Parallel)
148+
00:00:01.5097271 Give To (In Parallel)
149+
00:00:01.5271033 Mixed Read/Write (In Parallel)
150+
00:00:01.7198474 Empty Pool (.TryTake())
151+
00:00:05.4936074 TOTAL
117152

118153
OptimisticArrayObjectPool...............................
119-
00:00:03.0809331 Take From Empty (In Parallel)
120-
00:00:00.3488741 Give To (In Parallel)
121-
00:00:00.7180123 Mixed Read/Write (In Parallel)
122-
00:00:00.0531776 Empty Pool (.TryTake())
123-
00:00:04.2009971 TOTAL
154+
00:00:01.2872667 Take From Empty (In Parallel)
155+
00:00:03.1949158 Give To (In Parallel)
156+
00:00:00.5262142 Mixed Read/Write (In Parallel)
157+
00:00:11.7748329 Empty Pool (.TryTake())
158+
00:00:16.7832296 TOTAL
124159

125160

126-
Repeat 9600 for size 1000
161+
Repeat 14400 for size 500
127162
------------------------------------
128163

129164
QueueObjectPool.........................................
130-
00:00:00.4419158 Take From Empty (In Parallel)
131-
00:00:02.4529980 Give To (In Parallel)
132-
00:00:02.3464286 Mixed Read/Write (In Parallel)
133-
00:00:00.6892199 Empty Pool (.TryTake())
134-
00:00:05.9305623 TOTAL
165+
00:00:00.7797824 Take From Empty (In Parallel)
166+
00:00:01.6503887 Give To (In Parallel)
167+
00:00:01.3768657 Mixed Read/Write (In Parallel)
168+
00:00:00.8861150 Empty Pool (.TryTake())
169+
00:00:04.6931518 TOTAL
135170

136171
ConcurrentQueueObjectPool...............................
137-
00:00:00.4453723 Take From Empty (In Parallel)
138-
00:00:00.6651569 Give To (In Parallel)
139-
00:00:00.5769710 Mixed Read/Write (In Parallel)
140-
00:00:00.8922154 Empty Pool (.TryTake())
141-
00:00:02.5797156 TOTAL
172+
00:00:00.7994849 Take From Empty (In Parallel)
173+
00:00:00.9658497 Give To (In Parallel)
174+
00:00:00.7778244 Mixed Read/Write (In Parallel)
175+
00:00:01.1149906 Empty Pool (.TryTake())
176+
00:00:03.6581496 TOTAL
177+
178+
ConcurrentStackObjectPool...............................
179+
00:00:00.7487525 Take From Empty (In Parallel)
180+
00:00:02.3665267 Give To (In Parallel)
181+
00:00:02.6608263 Mixed Read/Write (In Parallel)
182+
00:00:03.0226290 Empty Pool (.TryTake())
183+
00:00:08.7987345 TOTAL
142184

143185
OptimisticArrayObjectPool...............................
144-
00:00:13.4891871 Take From Empty (In Parallel)
145-
00:00:00.2492917 Give To (In Parallel)
146-
00:00:01.1461595 Mixed Read/Write (In Parallel)
147-
00:00:00.0718376 Empty Pool (.TryTake())
148-
00:00:14.9564759 TOTAL
186+
00:00:01.0892049 Take From Empty (In Parallel)
187+
00:00:05.8599218 Give To (In Parallel)
188+
00:00:00.5797098 Mixed Read/Write (In Parallel)
189+
00:00:22.9215261 Empty Pool (.TryTake())
190+
00:00:30.4503626 TOTAL
149191

150192

0 commit comments

Comments
 (0)