You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
897 lines
57 KiB
Plaintext
897 lines
57 KiB
Plaintext
# Run on a 32-core cc2.8xlarge AWS instance
|
|
--- New run (Sat Nov 8 19:43:51 2014) ---
|
|
Running 64-bit benchmarks on a Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz
|
|
(precise mode)
|
|
Note that these are synthetic benchmarks. Take them with a grain of salt.
|
|
|
|
Legend:
|
|
'Avg': Average time taken per operation, normalized to be per thread
|
|
'Range': The minimum and maximum times taken per operation (per thread)
|
|
'Ops/s': Overall operations per second
|
|
'Ops/s/t': Operations per second per thread (inverse of 'Avg')
|
|
Operations include those that fail (e.g. because the queue is empty).
|
|
Each logical enqueue/dequeue counts as an individual operation when in bulk.
|
|
|
|
balanced:
|
|
(Measures the average operation speed with multiple symmetrical threads
|
|
under reasonable load -- small random intervals between accesses)
|
|
> moodycamel::ConcurrentQueue
|
|
Without tokens
|
|
2 threads: Avg: 0.9490us Range: [0.9444us, 0.9512us] Ops/s: 2.11M Ops/s/t: 1.05M
|
|
3 threads: Avg: 1.6217us Range: [1.6120us, 1.6288us] Ops/s: 1.85M Ops/s/t: 616.63k
|
|
4 threads: Avg: 2.5471us Range: [2.5150us, 2.5578us] Ops/s: 1.57M Ops/s/t: 392.60k
|
|
8 threads: Avg: 8.7667us Range: [8.7260us, 8.8109us] Ops/s: 912.54k Ops/s/t: 114.07k
|
|
12 threads: Avg: 0.0194ms Range: [0.0186ms, 0.0196ms] Ops/s: 618.06k Ops/s/t: 51.51k
|
|
16 threads: Avg: 0.0347ms Range: [0.0343ms, 0.0348ms] Ops/s: 461.73k Ops/s/t: 28.86k
|
|
32 threads: Avg: 0.1103ms Range: [0.1095ms, 0.1110ms] Ops/s: 290.14k Ops/s/t: 9.07k
|
|
Operations per second per thread (weighted average): 190.15k
|
|
|
|
With tokens
|
|
2 threads: Avg: 0.6626us Range: [0.6322us, 0.6736us] Ops/s: 3.02M Ops/s/t: 1.51M
|
|
3 threads: Avg: 1.1325us Range: [1.1000us, 1.1511us] Ops/s: 2.65M Ops/s/t: 882.97k
|
|
4 threads: Avg: 1.8496us Range: [1.8032us, 1.8770us] Ops/s: 2.16M Ops/s/t: 540.65k
|
|
8 threads: Avg: 6.9275us Range: [6.8699us, 6.9555us] Ops/s: 1.15M Ops/s/t: 144.35k
|
|
12 threads: Avg: 0.0152ms Range: [0.0150ms, 0.0153ms] Ops/s: 791.01k Ops/s/t: 65.92k
|
|
16 threads: Avg: 0.0252ms Range: [0.0248ms, 0.0254ms] Ops/s: 634.43k Ops/s/t: 39.65k
|
|
32 threads: Avg: 0.0634ms Range: [0.0629ms, 0.0638ms] Ops/s: 504.94k Ops/s/t: 15.78k
|
|
Operations per second per thread (weighted average): 266.86k
|
|
|
|
> boost::lockfree::queue
|
|
2 threads: Avg: 1.0256us Range: [0.6384us, 1.0845us] Ops/s: 1.95M Ops/s/t: 975.07k
|
|
3 threads: Avg: 1.8734us Range: [1.8230us, 1.8918us] Ops/s: 1.60M Ops/s/t: 533.80k
|
|
4 threads: Avg: 2.6625us Range: [2.4000us, 2.8020us] Ops/s: 1.50M Ops/s/t: 375.59k
|
|
8 threads: Avg: 0.0138ms Range: [0.0130ms, 0.0144ms] Ops/s: 577.73k Ops/s/t: 72.22k
|
|
12 threads: Avg: 0.0471ms Range: [0.0434ms, 0.0487ms] Ops/s: 254.73k Ops/s/t: 21.23k
|
|
16 threads: Avg: 0.1145ms Range: [0.1138ms, 0.1154ms] Ops/s: 139.74k Ops/s/t: 8.73k
|
|
32 threads: Avg: 0.4516ms Range: [0.4458ms, 0.4532ms] Ops/s: 70.85k Ops/s/t: 2.21k
|
|
Operations per second per thread (weighted average): 160.22k
|
|
|
|
> tbb::concurrent_queue
|
|
2 threads: Avg: 1.0053us Range: [0.9950us, 1.0112us] Ops/s: 1.99M Ops/s/t: 994.72k
|
|
3 threads: Avg: 1.5741us Range: [1.5690us, 1.5797us] Ops/s: 1.91M Ops/s/t: 635.27k
|
|
4 threads: Avg: 2.4572us Range: [2.4326us, 2.4669us] Ops/s: 1.63M Ops/s/t: 406.96k
|
|
8 threads: Avg: 7.5870us Range: [7.0968us, 7.6851us] Ops/s: 1.05M Ops/s/t: 131.80k
|
|
12 threads: Avg: 0.0156ms Range: [0.0155ms, 0.0158ms] Ops/s: 767.09k Ops/s/t: 63.92k
|
|
16 threads: Avg: 0.0265ms Range: [0.0262ms, 0.0266ms] Ops/s: 604.29k Ops/s/t: 37.77k
|
|
32 threads: Avg: 0.0928ms Range: [0.0879ms, 0.0957ms] Ops/s: 344.98k Ops/s/t: 10.78k
|
|
Operations per second per thread (weighted average): 195.65k
|
|
|
|
> SimpleLockFreeQueue
|
|
2 threads: Avg: 1.1227us Range: [1.0641us, 1.1357us] Ops/s: 1.78M Ops/s/t: 890.75k
|
|
3 threads: Avg: 1.6745us Range: [1.4539us, 1.9843us] Ops/s: 1.79M Ops/s/t: 597.20k
|
|
4 threads: Avg: 3.5253us Range: [3.5045us, 3.5347us] Ops/s: 1.13M Ops/s/t: 283.66k
|
|
8 threads: Avg: 0.0196ms Range: [0.0182ms, 0.0200ms] Ops/s: 408.60k Ops/s/t: 51.08k
|
|
12 threads: Avg: 0.0687ms Range: [0.0680ms, 0.0691ms] Ops/s: 174.55k Ops/s/t: 14.55k
|
|
16 threads: Avg: 0.1619ms Range: [0.1597ms, 0.1634ms] Ops/s: 98.85k Ops/s/t: 6.18k
|
|
32 threads: Avg: 0.6604ms Range: [0.5891ms, 0.6739ms] Ops/s: 48.46k Ops/s/t: 1.51k
|
|
Operations per second per thread (weighted average): 146.45k
|
|
|
|
> LockBasedQueue
|
|
2 threads: Avg: 1.6278us Range: [0.7309us, 1.7716us] Ops/s: 1.23M Ops/s/t: 614.31k
|
|
3 threads: Avg: 3.8231us Range: [3.7828us, 3.8525us] Ops/s: 784.71k Ops/s/t: 261.57k
|
|
4 threads: Avg: 8.2348us Range: [6.7550us, 8.7739us] Ops/s: 485.75k Ops/s/t: 121.44k
|
|
8 threads: Avg: 0.0468ms Range: [0.0459ms, 0.0474ms] Ops/s: 170.89k Ops/s/t: 21.36k
|
|
12 threads: Avg: 0.1094ms Range: [0.1087ms, 0.1099ms] Ops/s: 109.74k Ops/s/t: 9.14k
|
|
16 threads: Avg: 0.1959ms Range: [0.1928ms, 0.1980ms] Ops/s: 81.69k Ops/s/t: 5.11k
|
|
32 threads: Avg: 0.9527ms Range: [0.9363ms, 0.9593ms] Ops/s: 33.59k Ops/s/t: 1.05k
|
|
Operations per second per thread (weighted average): 79.79k
|
|
|
|
> std::queue
|
|
(skipping, benchmark not supported...)
|
|
|
|
only enqueue:
|
|
(Measures the average operation speed when all threads are producers)
|
|
> moodycamel::ConcurrentQueue
|
|
Without tokens
|
|
1 thread: Avg: 0.0141us Range: [0.0141us, 0.0141us] Ops/s: 70.69M Ops/s/t: 70.69M
|
|
2 threads: Avg: 0.0249us Range: [0.0249us, 0.0250us] Ops/s: 80.19M Ops/s/t: 40.10M
|
|
4 threads: Avg: 0.0499us Range: [0.0498us, 0.0499us] Ops/s: 80.20M Ops/s/t: 20.05M
|
|
8 threads: Avg: 0.1010us Range: [0.1007us, 0.1011us] Ops/s: 79.21M Ops/s/t: 9.90M
|
|
12 threads: Avg: 0.1543us Range: [0.1536us, 0.1548us] Ops/s: 77.78M Ops/s/t: 6.48M
|
|
16 threads: Avg: 0.2154us Range: [0.2142us, 0.2161us] Ops/s: 74.28M Ops/s/t: 4.64M
|
|
32 threads: Avg: 0.6913us Range: [0.6885us, 0.6931us] Ops/s: 46.29M Ops/s/t: 1.45M
|
|
48 threads: Avg: 1.0539us Range: [1.0423us, 1.0712us] Ops/s: 45.55M Ops/s/t: 948.90k
|
|
Operations per second per thread (weighted average): 11.32M
|
|
|
|
With tokens
|
|
1 thread: Avg: 9.0936ns Range: [9.0686ns, 9.1014ns] Ops/s: 109.97M Ops/s/t: 109.97M
|
|
2 threads: Avg: 0.0208us Range: [0.0207us, 0.0208us] Ops/s: 96.32M Ops/s/t: 48.16M
|
|
4 threads: Avg: 0.0417us Range: [0.0415us, 0.0417us] Ops/s: 96.04M Ops/s/t: 24.01M
|
|
8 threads: Avg: 0.0843us Range: [0.0841us, 0.0845us] Ops/s: 94.85M Ops/s/t: 11.86M
|
|
12 threads: Avg: 0.1313us Range: [0.1308us, 0.1316us] Ops/s: 91.38M Ops/s/t: 7.62M
|
|
16 threads: Avg: 0.1812us Range: [0.1799us, 0.1820us] Ops/s: 88.28M Ops/s/t: 5.52M
|
|
32 threads: Avg: 0.5041us Range: [0.5035us, 0.5046us] Ops/s: 63.48M Ops/s/t: 1.98M
|
|
48 threads: Avg: 0.7848us Range: [0.7781us, 0.7938us] Ops/s: 61.16M Ops/s/t: 1.27M
|
|
Operations per second per thread (weighted average): 14.89M
|
|
|
|
> boost::lockfree::queue
|
|
1 thread: Avg: 0.0533us Range: [0.0533us, 0.0533us] Ops/s: 18.76M Ops/s/t: 18.76M
|
|
2 threads: Avg: 1.3973us Range: [1.3962us, 1.3985us] Ops/s: 1.43M Ops/s/t: 715.65k
|
|
4 threads: Avg: 7.1735us Range: [4.8830us, 7.7483us] Ops/s: 557.61k Ops/s/t: 139.40k
|
|
8 threads: Avg: 0.0413ms Range: [0.0391ms, 0.0419ms] Ops/s: 193.47k Ops/s/t: 24.18k
|
|
12 threads: Avg: 0.1030ms Range: [0.0992ms, 0.1066ms] Ops/s: 116.47k Ops/s/t: 9.71k
|
|
16 threads: Avg: 0.1928ms Range: [0.1892ms, 0.1949ms] Ops/s: 82.97k Ops/s/t: 5.19k
|
|
32 threads: Avg: 0.7135ms Range: [0.7109ms, 0.7147ms] Ops/s: 44.85k Ops/s/t: 1.40k
|
|
48 threads: Avg: 1.7082ms Range: [1.7023ms, 1.7125ms] Ops/s: 28.10k Ops/s/t: 585.42
|
|
Operations per second per thread (weighted average): 1.00M
|
|
|
|
> tbb::concurrent_queue
|
|
1 thread: Avg: 0.0301us Range: [0.0301us, 0.0301us] Ops/s: 33.21M Ops/s/t: 33.21M
|
|
2 threads: Avg: 0.5175us Range: [0.5168us, 0.5178us] Ops/s: 3.86M Ops/s/t: 1.93M
|
|
4 threads: Avg: 1.9453us Range: [1.9412us, 1.9502us] Ops/s: 2.06M Ops/s/t: 514.07k
|
|
8 threads: Avg: 0.0107ms Range: [0.0106ms, 0.0107ms] Ops/s: 748.95k Ops/s/t: 93.62k
|
|
12 threads: Avg: 0.0256ms Range: [0.0233ms, 0.0261ms] Ops/s: 468.77k Ops/s/t: 39.06k
|
|
16 threads: Avg: 0.0450ms Range: [0.0447ms, 0.0451ms] Ops/s: 355.86k Ops/s/t: 22.24k
|
|
32 threads: Avg: 0.2274ms Range: [0.2266ms, 0.2281ms] Ops/s: 140.70k Ops/s/t: 4.40k
|
|
48 threads: Avg: 0.7102ms Range: [0.7052ms, 0.7157ms] Ops/s: 67.58k Ops/s/t: 1.41k
|
|
Operations per second per thread (weighted average): 1.84M
|
|
|
|
> SimpleLockFreeQueue
|
|
1 thread: Avg: 0.0496us Range: [0.0496us, 0.0496us] Ops/s: 20.18M Ops/s/t: 20.18M
|
|
2 threads: Avg: 1.0667us Range: [1.0643us, 1.0678us] Ops/s: 1.87M Ops/s/t: 937.43k
|
|
4 threads: Avg: 4.5046us Range: [3.9727us, 4.6711us] Ops/s: 887.98k Ops/s/t: 222.00k
|
|
8 threads: Avg: 0.0156ms Range: [0.0146ms, 0.0166ms] Ops/s: 513.34k Ops/s/t: 64.17k
|
|
12 threads: Avg: 0.0378ms Range: [0.0367ms, 0.0385ms] Ops/s: 317.46k Ops/s/t: 26.45k
|
|
16 threads: Avg: 0.0684ms Range: [0.0671ms, 0.0691ms] Ops/s: 233.94k Ops/s/t: 14.62k
|
|
32 threads: Avg: 0.1494ms Range: [0.1483ms, 0.1498ms] Ops/s: 214.18k Ops/s/t: 6.69k
|
|
48 threads: Avg: 0.3392ms Range: [0.3367ms, 0.3400ms] Ops/s: 141.51k Ops/s/t: 2.95k
|
|
Operations per second per thread (weighted average): 1.14M
|
|
|
|
> LockBasedQueue
|
|
1 thread: Avg: 0.0546us Range: [0.0546us, 0.0546us] Ops/s: 18.30M Ops/s/t: 18.30M
|
|
2 threads: Avg: 0.4666us Range: [0.4610us, 0.4700us] Ops/s: 4.29M Ops/s/t: 2.14M
|
|
4 threads: Avg: 5.9669us Range: [5.0405us, 6.2625us] Ops/s: 670.37k Ops/s/t: 167.59k
|
|
8 threads: Avg: 0.0217ms Range: [0.0186ms, 0.0223ms] Ops/s: 368.76k Ops/s/t: 46.09k
|
|
12 threads: Avg: 0.0395ms Range: [0.0227ms, 0.0467ms] Ops/s: 304.07k Ops/s/t: 25.34k
|
|
16 threads: Avg: 0.0775ms Range: [0.0753ms, 0.0790ms] Ops/s: 206.41k Ops/s/t: 12.90k
|
|
32 threads: Avg: 0.2710ms Range: [0.2028ms, 0.2853ms] Ops/s: 118.07k Ops/s/t: 3.69k
|
|
48 threads: Avg: 0.5390ms Range: [0.5018ms, 0.5553ms] Ops/s: 89.05k Ops/s/t: 1.86k
|
|
Operations per second per thread (weighted average): 1.13M
|
|
|
|
> std::queue
|
|
1 thread: Avg: 5.0901ns Range: [5.0309ns, 5.0997ns] Ops/s: 196.46M Ops/s/t: 196.46M
|
|
Operations per second per thread (weighted average): 196.46M
|
|
|
|
only enqueue (pre-allocated):
|
|
(Measures the average operation speed when all threads are producers,
|
|
and the queue has been stretched out first)
|
|
> moodycamel::ConcurrentQueue
|
|
Without tokens
|
|
1 thread: Avg: 0.0126us Range: [0.0126us, 0.0126us] Ops/s: 79.19M Ops/s/t: 79.19M
|
|
2 threads: Avg: 0.0337us Range: [0.0337us, 0.0337us] Ops/s: 59.37M Ops/s/t: 29.69M
|
|
4 threads: Avg: 0.1239us Range: [0.1214us, 0.1253us] Ops/s: 32.28M Ops/s/t: 8.07M
|
|
8 threads: Avg: 0.5276us Range: [0.5163us, 0.5358us] Ops/s: 15.16M Ops/s/t: 1.90M
|
|
32 threads: Avg: 0.0168ms Range: [0.0165ms, 0.0169ms] Ops/s: 1.91M Ops/s/t: 59.62k
|
|
Operations per second per thread (weighted average): 11.09M
|
|
|
|
With tokens
|
|
1 thread: Avg: 7.5041ns Range: [7.4886ns, 7.5103ns] Ops/s: 133.26M Ops/s/t: 133.26M
|
|
2 threads: Avg: 0.0168us Range: [0.0167us, 0.0168us] Ops/s: 119.21M Ops/s/t: 59.60M
|
|
4 threads: Avg: 0.0331us Range: [0.0330us, 0.0331us] Ops/s: 120.88M Ops/s/t: 30.22M
|
|
8 threads: Avg: 0.0661us Range: [0.0655us, 0.0665us] Ops/s: 121.05M Ops/s/t: 15.13M
|
|
32 threads: Avg: 0.3257us Range: [0.3239us, 0.3267us] Ops/s: 98.25M Ops/s/t: 3.07M
|
|
Operations per second per thread (weighted average): 26.22M
|
|
|
|
> boost::lockfree::queue
|
|
1 thread: Avg: 0.0358us Range: [0.0357us, 0.0358us] Ops/s: 27.96M Ops/s/t: 27.96M
|
|
2 threads: Avg: 0.2404us Range: [0.2268us, 0.2599us] Ops/s: 8.32M Ops/s/t: 4.16M
|
|
4 threads: Avg: 7.3158us Range: [6.9033us, 8.1491us] Ops/s: 546.76k Ops/s/t: 136.69k
|
|
8 threads: Avg: 0.0487ms Range: [0.0465ms, 0.0492ms] Ops/s: 164.38k Ops/s/t: 20.55k
|
|
32 threads: Avg: 0.5564ms Range: [0.5395ms, 0.5664ms] Ops/s: 57.51k Ops/s/t: 1.80k
|
|
Operations per second per thread (weighted average): 2.65M
|
|
|
|
> tbb::concurrent_queue
|
|
1 thread: Avg: 0.0301us Range: [0.0301us, 0.0301us] Ops/s: 33.25M Ops/s/t: 33.25M
|
|
2 threads: Avg: 0.5946us Range: [0.5919us, 0.5973us] Ops/s: 3.36M Ops/s/t: 1.68M
|
|
4 threads: Avg: 1.9060us Range: [1.9048us, 1.9069us] Ops/s: 2.10M Ops/s/t: 524.66k
|
|
8 threads: Avg: 0.0105ms Range: [0.0105ms, 0.0105ms] Ops/s: 761.71k Ops/s/t: 95.21k
|
|
32 threads: Avg: 0.2255ms Range: [0.2248ms, 0.2259ms] Ops/s: 141.91k Ops/s/t: 4.43k
|
|
Operations per second per thread (weighted average): 2.87M
|
|
|
|
> SimpleLockFreeQueue
|
|
1 thread: Avg: 0.0460us Range: [0.0460us, 0.0460us] Ops/s: 21.73M Ops/s/t: 21.73M
|
|
2 threads: Avg: 1.2065us Range: [1.2053us, 1.2073us] Ops/s: 1.66M Ops/s/t: 828.82k
|
|
4 threads: Avg: 4.9670us Range: [4.3212us, 5.1403us] Ops/s: 805.32k Ops/s/t: 201.33k
|
|
8 threads: Avg: 0.0192ms Range: [0.0188ms, 0.0194ms] Ops/s: 417.06k Ops/s/t: 52.13k
|
|
32 threads: Avg: 0.2600ms Range: [0.2589ms, 0.2607ms] Ops/s: 123.06k Ops/s/t: 3.85k
|
|
Operations per second per thread (weighted average): 1.82M
|
|
|
|
> LockBasedQueue
|
|
1 thread: Avg: 0.0553us Range: [0.0552us, 0.0553us] Ops/s: 18.09M Ops/s/t: 18.09M
|
|
2 threads: Avg: 0.4806us Range: [0.4753us, 0.4859us] Ops/s: 4.16M Ops/s/t: 2.08M
|
|
4 threads: Avg: 4.9843us Range: [4.7319us, 5.1623us] Ops/s: 802.51k Ops/s/t: 200.63k
|
|
8 threads: Avg: 0.0218ms Range: [0.0202ms, 0.0223ms] Ops/s: 366.19k Ops/s/t: 45.77k
|
|
32 threads: Avg: 0.2786ms Range: [0.2736ms, 0.2813ms] Ops/s: 114.85k Ops/s/t: 3.59k
|
|
Operations per second per thread (weighted average): 1.67M
|
|
|
|
> std::queue
|
|
1 thread: Avg: 5.1703ns Range: [5.1616ns, 5.1739ns] Ops/s: 193.41M Ops/s/t: 193.41M
|
|
Operations per second per thread (weighted average): 193.41M
|
|
|
|
only enqueue bulk:
|
|
(Measures the average speed of enqueueing an item in bulk when all threads are producers)
|
|
> moodycamel::ConcurrentQueue
|
|
Without tokens
|
|
1 thread: Avg: 4.3278ns Range: [4.3220ns, 4.3302ns] Ops/s: 231.07M Ops/s/t: 231.07M
|
|
2 threads: Avg: 8.6521ns Range: [8.6212ns, 8.6733ns] Ops/s: 231.16M Ops/s/t: 115.58M
|
|
4 threads: Avg: 0.0175us Range: [0.0174us, 0.0175us] Ops/s: 228.85M Ops/s/t: 57.21M
|
|
8 threads: Avg: 0.0340us Range: [0.0338us, 0.0341us] Ops/s: 235.47M Ops/s/t: 29.43M
|
|
12 threads: Avg: 0.0595us Range: [0.0593us, 0.0597us] Ops/s: 201.65M Ops/s/t: 16.80M
|
|
16 threads: Avg: 0.1129us Range: [0.1018us, 0.1191us] Ops/s: 141.69M Ops/s/t: 8.86M
|
|
32 threads: Avg: 0.3418us Range: [0.3295us, 0.3519us] Ops/s: 93.62M Ops/s/t: 2.93M
|
|
48 threads: Avg: 0.5520us Range: [0.5256us, 0.5639us] Ops/s: 86.96M Ops/s/t: 1.81M
|
|
Operations per second per thread (weighted average): 32.34M
|
|
|
|
With tokens
|
|
1 thread: Avg: 4.0631ns Range: [4.0621ns, 4.0644ns] Ops/s: 246.12M Ops/s/t: 246.12M
|
|
2 threads: Avg: 8.6975ns Range: [8.6641ns, 8.7179ns] Ops/s: 229.95M Ops/s/t: 114.98M
|
|
4 threads: Avg: 0.0182us Range: [0.0181us, 0.0182us] Ops/s: 220.30M Ops/s/t: 55.08M
|
|
8 threads: Avg: 0.0392us Range: [0.0390us, 0.0393us] Ops/s: 203.85M Ops/s/t: 25.48M
|
|
12 threads: Avg: 0.0685us Range: [0.0682us, 0.0687us] Ops/s: 175.15M Ops/s/t: 14.60M
|
|
16 threads: Avg: 0.1134us Range: [0.1122us, 0.1142us] Ops/s: 141.05M Ops/s/t: 8.82M
|
|
32 threads: Avg: 0.3856us Range: [0.3822us, 0.3872us] Ops/s: 82.99M Ops/s/t: 2.59M
|
|
48 threads: Avg: 0.5514us Range: [0.5408us, 0.5617us] Ops/s: 87.05M Ops/s/t: 1.81M
|
|
Operations per second per thread (weighted average): 32.54M
|
|
|
|
> boost::lockfree::queue
|
|
(skipping, benchmark not supported...)
|
|
|
|
> tbb::concurrent_queue
|
|
(skipping, benchmark not supported...)
|
|
|
|
> SimpleLockFreeQueue
|
|
(skipping, benchmark not supported...)
|
|
|
|
> LockBasedQueue
|
|
(skipping, benchmark not supported...)
|
|
|
|
> std::queue
|
|
(skipping, benchmark not supported...)
|
|
|
|
only enqueue bulk (pre-allocated):
|
|
(Measures the average speed of enqueueing an item in bulk when all threads are producers,
|
|
and the queue has been stretched out first)
|
|
> moodycamel::ConcurrentQueue
|
|
Without tokens
|
|
1 thread: Avg: 4.3689ns Range: [4.3676ns, 4.3710ns] Ops/s: 228.89M Ops/s/t: 228.89M
|
|
2 threads: Avg: 8.9038ns Range: [8.8807ns, 8.9141ns] Ops/s: 224.62M Ops/s/t: 112.31M
|
|
4 threads: Avg: 0.0188us Range: [0.0188us, 0.0189us] Ops/s: 212.28M Ops/s/t: 53.07M
|
|
8 threads: Avg: 0.0411us Range: [0.0410us, 0.0413us] Ops/s: 194.54M Ops/s/t: 24.32M
|
|
32 threads: Avg: 0.4054us Range: [0.3987us, 0.4083us] Ops/s: 78.93M Ops/s/t: 2.47M
|
|
Operations per second per thread (weighted average): 44.70M
|
|
|
|
With tokens
|
|
1 thread: Avg: 4.0712ns Range: [4.0682ns, 4.0741ns] Ops/s: 245.63M Ops/s/t: 245.63M
|
|
2 threads: Avg: 8.9105ns Range: [8.8472ns, 8.9616ns] Ops/s: 224.46M Ops/s/t: 112.23M
|
|
4 threads: Avg: 0.0185us Range: [0.0184us, 0.0185us] Ops/s: 216.46M Ops/s/t: 54.12M
|
|
8 threads: Avg: 0.0397us Range: [0.0396us, 0.0399us] Ops/s: 201.28M Ops/s/t: 25.16M
|
|
32 threads: Avg: 0.3868us Range: [0.3856us, 0.3875us] Ops/s: 82.73M Ops/s/t: 2.59M
|
|
Operations per second per thread (weighted average): 46.39M
|
|
|
|
> boost::lockfree::queue
|
|
(skipping, benchmark not supported...)
|
|
|
|
> tbb::concurrent_queue
|
|
(skipping, benchmark not supported...)
|
|
|
|
> SimpleLockFreeQueue
|
|
(skipping, benchmark not supported...)
|
|
|
|
> LockBasedQueue
|
|
(skipping, benchmark not supported...)
|
|
|
|
> std::queue
|
|
(skipping, benchmark not supported...)
|
|
|
|
only dequeue:
|
|
(Measures the average operation speed when all threads are consumers)
|
|
> moodycamel::ConcurrentQueue
|
|
Without tokens
|
|
1 thread: Avg: 0.0357us Range: [0.0357us, 0.0357us] Ops/s: 27.99M Ops/s/t: 27.99M
|
|
2 threads: Avg: 0.7098us Range: [0.7086us, 0.7108us] Ops/s: 2.82M Ops/s/t: 1.41M
|
|
4 threads: Avg: 2.6890us Range: [2.6831us, 2.6970us] Ops/s: 1.49M Ops/s/t: 371.89k
|
|
8 threads: Avg: 8.9909us Range: [8.5916us, 9.1297us] Ops/s: 889.79k Ops/s/t: 111.22k
|
|
12 threads: Avg: 0.0187ms Range: [0.0185ms, 0.0188ms] Ops/s: 642.71k Ops/s/t: 53.56k
|
|
16 threads: Avg: 0.0317ms Range: [0.0310ms, 0.0321ms] Ops/s: 504.92k Ops/s/t: 31.56k
|
|
32 threads: Avg: 0.0862ms Range: [0.0855ms, 0.0865ms] Ops/s: 371.38k Ops/s/t: 11.61k
|
|
48 threads: Avg: 0.2111ms Range: [0.2092ms, 0.2126ms] Ops/s: 227.42k Ops/s/t: 4.74k
|
|
Operations per second per thread (weighted average): 984.16k
|
|
|
|
With tokens
|
|
1 thread: Avg: 0.0312us Range: [0.0312us, 0.0312us] Ops/s: 32.04M Ops/s/t: 32.04M
|
|
2 threads: Avg: 0.0692us Range: [0.0691us, 0.0693us] Ops/s: 28.89M Ops/s/t: 14.45M
|
|
4 threads: Avg: 0.1392us Range: [0.1389us, 0.1394us] Ops/s: 28.74M Ops/s/t: 7.18M
|
|
8 threads: Avg: 0.2820us Range: [0.2804us, 0.2831us] Ops/s: 28.36M Ops/s/t: 3.55M
|
|
12 threads: Avg: 0.4334us Range: [0.4315us, 0.4349us] Ops/s: 27.69M Ops/s/t: 2.31M
|
|
16 threads: Avg: 0.5946us Range: [0.5828us, 0.6055us] Ops/s: 26.91M Ops/s/t: 1.68M
|
|
32 threads: Avg: 8.8624us Range: [7.6002us, 9.7372us] Ops/s: 3.61M Ops/s/t: 112.84k
|
|
48 threads: Avg: 0.0125ms Range: [0.0115ms, 0.0136ms] Ops/s: 3.83M Ops/s/t: 79.79k
|
|
Operations per second per thread (weighted average): 3.48M
|
|
|
|
> boost::lockfree::queue
|
|
1 thread: Avg: 0.0293us Range: [0.0293us, 0.0293us] Ops/s: 34.15M Ops/s/t: 34.15M
|
|
2 threads: Avg: 1.2354us Range: [1.2319us, 1.2374us] Ops/s: 1.62M Ops/s/t: 809.45k
|
|
4 threads: Avg: 4.7702us Range: [3.9572us, 4.8897us] Ops/s: 838.53k Ops/s/t: 209.63k
|
|
8 threads: Avg: 0.0188ms Range: [0.0185ms, 0.0189ms] Ops/s: 426.57k Ops/s/t: 53.32k
|
|
12 threads: Avg: 0.0436ms Range: [0.0429ms, 0.0439ms] Ops/s: 275.09k Ops/s/t: 22.92k
|
|
16 threads: Avg: 0.0829ms Range: [0.0807ms, 0.0835ms] Ops/s: 192.92k Ops/s/t: 12.06k
|
|
32 threads: Avg: 0.3059ms Range: [0.3049ms, 0.3070ms] Ops/s: 104.60k Ops/s/t: 3.27k
|
|
48 threads: Avg: 0.7265ms Range: [0.7189ms, 0.7301ms] Ops/s: 66.07k Ops/s/t: 1.38k
|
|
Operations per second per thread (weighted average): 1.10M
|
|
|
|
> tbb::concurrent_queue
|
|
1 thread: Avg: 0.0197us Range: [0.0197us, 0.0197us] Ops/s: 50.68M Ops/s/t: 50.68M
|
|
2 threads: Avg: 0.3747us Range: [0.2215us, 0.3976us] Ops/s: 5.34M Ops/s/t: 2.67M
|
|
4 threads: Avg: 2.1049us Range: [1.4759us, 2.1970us] Ops/s: 1.90M Ops/s/t: 475.08k
|
|
8 threads: Avg: 0.0109ms Range: [0.0107ms, 0.0111ms] Ops/s: 731.00k Ops/s/t: 91.38k
|
|
12 threads: Avg: 0.0255ms Range: [0.0254ms, 0.0255ms] Ops/s: 471.40k Ops/s/t: 39.28k
|
|
16 threads: Avg: 0.0431ms Range: [0.0386ms, 0.0456ms] Ops/s: 371.22k Ops/s/t: 23.20k
|
|
32 threads: Avg: 0.1530ms Range: [0.1520ms, 0.1536ms] Ops/s: 209.18k Ops/s/t: 6.54k
|
|
48 threads: Avg: 0.6456ms Range: [0.6427ms, 0.6491ms] Ops/s: 74.35k Ops/s/t: 1.55k
|
|
Operations per second per thread (weighted average): 1.82M
|
|
|
|
> SimpleLockFreeQueue
|
|
1 thread: Avg: 0.0244us Range: [0.0244us, 0.0245us] Ops/s: 40.92M Ops/s/t: 40.92M
|
|
2 threads: Avg: 1.5279us Range: [1.5107us, 1.5381us] Ops/s: 1.31M Ops/s/t: 654.49k
|
|
4 threads: Avg: 9.8623us Range: [9.7481us, 9.8987us] Ops/s: 405.59k Ops/s/t: 101.40k
|
|
8 threads: Avg: 0.0504ms Range: [0.0470ms, 0.0522ms] Ops/s: 158.77k Ops/s/t: 19.85k
|
|
12 threads: Avg: 0.1378ms Range: [0.1328ms, 0.1407ms] Ops/s: 87.11k Ops/s/t: 7.26k
|
|
16 threads: Avg: 0.2761ms Range: [0.2702ms, 0.2790ms] Ops/s: 57.96k Ops/s/t: 3.62k
|
|
32 threads: Avg: 0.9643ms Range: [0.9583ms, 0.9689ms] Ops/s: 33.18k Ops/s/t: 1.04k
|
|
48 threads: Avg: 2.1728ms Range: [2.1511ms, 2.1824ms] Ops/s: 22.09k Ops/s/t: 460.24
|
|
Operations per second per thread (weighted average): 1.28M
|
|
|
|
> LockBasedQueue
|
|
1 thread: Avg: 0.0457us Range: [0.0457us, 0.0457us] Ops/s: 21.87M Ops/s/t: 21.87M
|
|
2 threads: Avg: 0.3881us Range: [0.3595us, 0.4002us] Ops/s: 5.15M Ops/s/t: 2.58M
|
|
4 threads: Avg: 8.5581us Range: [8.3268us, 8.6466us] Ops/s: 467.39k Ops/s/t: 116.85k
|
|
8 threads: Avg: 0.0367ms Range: [0.0346ms, 0.0372ms] Ops/s: 218.20k Ops/s/t: 27.27k
|
|
12 threads: Avg: 0.0824ms Range: [0.0806ms, 0.0830ms] Ops/s: 145.71k Ops/s/t: 12.14k
|
|
16 threads: Avg: 0.1363ms Range: [0.1032ms, 0.1443ms] Ops/s: 117.36k Ops/s/t: 7.34k
|
|
32 threads: Avg: 0.4370ms Range: [0.4082ms, 0.4561ms] Ops/s: 73.23k Ops/s/t: 2.29k
|
|
48 threads: Avg: 0.7839ms Range: [0.7233ms, 0.8163ms] Ops/s: 61.23k Ops/s/t: 1.28k
|
|
Operations per second per thread (weighted average): 837.50k
|
|
|
|
> std::queue
|
|
1 thread: Avg: 3.2964ns Range: [3.2952ns, 3.2980ns] Ops/s: 303.36M Ops/s/t: 303.36M
|
|
1 thread: Avg: 3.2976ns Range: [3.2950ns, 3.2985ns] Ops/s: 303.25M Ops/s/t: 303.25M
|
|
Operations per second per thread (weighted average): 303.31M
|
|
|
|
only dequeue bulk:
|
|
(Measures the average speed of dequeueing an item in bulk when all threads are consumers)
|
|
> moodycamel::ConcurrentQueue
|
|
Without tokens
|
|
1 thread: Avg: 1.3818ns Range: [1.3812ns, 1.3828ns] Ops/s: 723.68M Ops/s/t: 723.68M
|
|
2 threads: Avg: 8.9961ns Range: [8.9915ns, 8.9977ns] Ops/s: 222.32M Ops/s/t: 111.16M
|
|
4 threads: Avg: 0.0390us Range: [0.0389us, 0.0391us] Ops/s: 102.59M Ops/s/t: 25.65M
|
|
8 threads: Avg: 0.1611us Range: [0.1607us, 0.1614us] Ops/s: 49.65M Ops/s/t: 6.21M
|
|
12 threads: Avg: 0.3702us Range: [0.3327us, 0.3803us] Ops/s: 32.42M Ops/s/t: 2.70M
|
|
16 threads: Avg: 0.6996us Range: [0.6953us, 0.7054us] Ops/s: 22.87M Ops/s/t: 1.43M
|
|
32 threads: Avg: 2.3975us Range: [2.3849us, 2.4046us] Ops/s: 13.35M Ops/s/t: 417.11k
|
|
48 threads: Avg: 5.1981us Range: [5.1573us, 5.2400us] Ops/s: 9.23M Ops/s/t: 192.38k
|
|
Operations per second per thread (weighted average): 30.54M
|
|
|
|
With tokens
|
|
1 thread: Avg: 1.2074ns Range: [1.2052ns, 1.2110ns] Ops/s: 828.20M Ops/s/t: 828.20M
|
|
2 threads: Avg: 2.8806ns Range: [2.8747ns, 2.8845ns] Ops/s: 694.30M Ops/s/t: 347.15M
|
|
4 threads: Avg: 5.7023ns Range: [5.6673ns, 5.7191ns] Ops/s: 701.47M Ops/s/t: 175.37M
|
|
8 threads: Avg: 0.0126us Range: [0.0126us, 0.0127us] Ops/s: 634.07M Ops/s/t: 79.26M
|
|
12 threads: Avg: 0.0213us Range: [0.0213us, 0.0213us] Ops/s: 563.18M Ops/s/t: 46.93M
|
|
16 threads: Avg: 0.0323us Range: [0.0323us, 0.0324us] Ops/s: 494.72M Ops/s/t: 30.92M
|
|
32 threads: Avg: 0.1146us Range: [0.1121us, 0.1151us] Ops/s: 279.12M Ops/s/t: 8.72M
|
|
48 threads: Avg: 0.1535us Range: [0.1530us, 0.1538us] Ops/s: 312.73M Ops/s/t: 6.52M
|
|
Operations per second per thread (weighted average): 86.51M
|
|
|
|
> boost::lockfree::queue
|
|
(skipping, benchmark not supported...)
|
|
|
|
> tbb::concurrent_queue
|
|
(skipping, benchmark not supported...)
|
|
|
|
> SimpleLockFreeQueue
|
|
(skipping, benchmark not supported...)
|
|
|
|
> LockBasedQueue
|
|
(skipping, benchmark not supported...)
|
|
|
|
> std::queue
|
|
(skipping, benchmark not supported...)
|
|
|
|
mostly enqueue:
|
|
(Measures the average operation speed when most threads are enqueueing)
|
|
> moodycamel::ConcurrentQueue
|
|
Without tokens
|
|
2 threads: Avg: 0.1469us Range: [0.0750us, 0.1572us] Ops/s: 13.61M Ops/s/t: 6.81M
|
|
4 threads: Avg: 0.1857us Range: [0.1846us, 0.1868us] Ops/s: 21.54M Ops/s/t: 5.38M
|
|
8 threads: Avg: 0.8476us Range: [0.8309us, 0.8565us] Ops/s: 9.44M Ops/s/t: 1.18M
|
|
32 threads: Avg: 9.9740us Range: [9.8477us, 0.0101ms] Ops/s: 3.21M Ops/s/t: 100.26k
|
|
Operations per second per thread (weighted average): 2.04M
|
|
|
|
With tokens
|
|
2 threads: Avg: 0.0950us Range: [0.0891us, 0.0964us] Ops/s: 21.04M Ops/s/t: 10.52M
|
|
4 threads: Avg: 0.0852us Range: [0.0852us, 0.0853us] Ops/s: 46.94M Ops/s/t: 11.74M
|
|
8 threads: Avg: 0.2579us Range: [0.1719us, 0.4591us] Ops/s: 31.02M Ops/s/t: 3.88M
|
|
32 threads: Avg: 3.4474us Range: [1.9589us, 4.7942us] Ops/s: 9.28M Ops/s/t: 290.07k
|
|
Operations per second per thread (weighted average): 4.28M
|
|
|
|
> boost::lockfree::queue
|
|
2 threads: Avg: 0.1359us Range: [0.1334us, 0.1373us] Ops/s: 14.71M Ops/s/t: 7.36M
|
|
4 threads: Avg: 4.1708us Range: [3.5076us, 4.3484us] Ops/s: 959.05k Ops/s/t: 239.76k
|
|
8 threads: Avg: 0.0262ms Range: [0.0259ms, 0.0264ms] Ops/s: 305.26k Ops/s/t: 38.16k
|
|
32 threads: Avg: 0.4770ms Range: [0.4692ms, 0.4830ms] Ops/s: 67.08k Ops/s/t: 2.10k
|
|
Operations per second per thread (weighted average): 924.62k
|
|
|
|
> tbb::concurrent_queue
|
|
2 threads: Avg: 0.1219us Range: [0.1113us, 0.1395us] Ops/s: 16.41M Ops/s/t: 8.20M
|
|
4 threads: Avg: 1.5456us Range: [1.5278us, 1.5544us] Ops/s: 2.59M Ops/s/t: 647.00k
|
|
8 threads: Avg: 7.6602us Range: [7.3877us, 7.8992us] Ops/s: 1.04M Ops/s/t: 130.54k
|
|
32 threads: Avg: 0.1652ms Range: [0.1648ms, 0.1655ms] Ops/s: 193.70k Ops/s/t: 6.05k
|
|
Operations per second per thread (weighted average): 1.12M
|
|
|
|
> SimpleLockFreeQueue
|
|
2 threads: Avg: 0.9759us Range: [0.9742us, 0.9783us] Ops/s: 2.05M Ops/s/t: 1.02M
|
|
4 threads: Avg: 4.5384us Range: [3.3258us, 4.7206us] Ops/s: 881.38k Ops/s/t: 220.34k
|
|
8 threads: Avg: 0.0169ms Range: [0.0165ms, 0.0172ms] Ops/s: 472.04k Ops/s/t: 59.00k
|
|
32 threads: Avg: 0.2282ms Range: [0.2272ms, 0.2293ms] Ops/s: 140.23k Ops/s/t: 4.38k
|
|
Operations per second per thread (weighted average): 174.92k
|
|
|
|
> LockBasedQueue
|
|
2 threads: Avg: 0.2195us Range: [0.2176us, 0.2217us] Ops/s: 9.11M Ops/s/t: 4.55M
|
|
4 threads: Avg: 6.7491us Range: [4.7114us, 7.6459us] Ops/s: 592.67k Ops/s/t: 148.17k
|
|
8 threads: Avg: 0.0326ms Range: [0.0304ms, 0.0351ms] Ops/s: 245.33k Ops/s/t: 30.67k
|
|
32 threads: Avg: 0.4410ms Range: [0.3794ms, 0.4928ms] Ops/s: 72.57k Ops/s/t: 2.27k
|
|
Operations per second per thread (weighted average): 574.60k
|
|
|
|
> std::queue
|
|
(skipping, benchmark not supported...)
|
|
|
|
mostly enqueue bulk:
|
|
(Measures the average speed of enqueueing an item in bulk under light contention)
|
|
> moodycamel::ConcurrentQueue
|
|
Without tokens
|
|
2 threads: Avg: 8.0674ns Range: [8.0590ns, 8.0748ns] Ops/s: 247.91M Ops/s/t: 123.96M
|
|
4 threads: Avg: 0.0184us Range: [0.0183us, 0.0185us] Ops/s: 217.04M Ops/s/t: 54.26M
|
|
8 threads: Avg: 0.0383us Range: [0.0380us, 0.0384us] Ops/s: 208.95M Ops/s/t: 26.12M
|
|
32 threads: Avg: 0.2972us Range: [0.2858us, 0.3040us] Ops/s: 107.67M Ops/s/t: 3.36M
|
|
Operations per second per thread (weighted average): 31.66M
|
|
|
|
With tokens
|
|
2 threads: Avg: 8.0878ns Range: [7.2902ns, 8.2116ns] Ops/s: 247.29M Ops/s/t: 123.64M
|
|
4 threads: Avg: 0.0143us Range: [0.0136us, 0.0146us] Ops/s: 279.47M Ops/s/t: 69.87M
|
|
8 threads: Avg: 0.0328us Range: [0.0306us, 0.0378us] Ops/s: 243.54M Ops/s/t: 30.44M
|
|
32 threads: Avg: 0.2700us Range: [0.2470us, 0.2801us] Ops/s: 118.51M Ops/s/t: 3.70M
|
|
Operations per second per thread (weighted average): 35.43M
|
|
|
|
> boost::lockfree::queue
|
|
(skipping, benchmark not supported...)
|
|
|
|
> tbb::concurrent_queue
|
|
(skipping, benchmark not supported...)
|
|
|
|
> SimpleLockFreeQueue
|
|
(skipping, benchmark not supported...)
|
|
|
|
> LockBasedQueue
|
|
(skipping, benchmark not supported...)
|
|
|
|
> std::queue
|
|
(skipping, benchmark not supported...)
|
|
|
|
mostly dequeue:
|
|
(Measures the average operation speed when most threads are dequeueing)
|
|
> moodycamel::ConcurrentQueue
|
|
Without tokens
|
|
2 threads: Avg: 0.1215us Range: [0.1195us, 0.1224us] Ops/s: 16.46M Ops/s/t: 8.23M
|
|
4 threads: Avg: 1.6265us Range: [1.6144us, 1.6423us] Ops/s: 2.46M Ops/s/t: 614.83k
|
|
8 threads: Avg: 5.0893us Range: [5.0332us, 5.1180us] Ops/s: 1.57M Ops/s/t: 196.49k
|
|
Operations per second per thread (weighted average): 2.15M
|
|
|
|
With tokens
|
|
2 threads: Avg: 0.1570us Range: [0.1397us, 0.1603us] Ops/s: 12.74M Ops/s/t: 6.37M
|
|
4 threads: Avg: 1.5041us Range: [1.5001us, 1.5064us] Ops/s: 2.66M Ops/s/t: 664.87k
|
|
8 threads: Avg: 1.5055us Range: [1.4913us, 1.5111us] Ops/s: 5.31M Ops/s/t: 664.24k
|
|
Operations per second per thread (weighted average): 1.96M
|
|
|
|
> boost::lockfree::queue
|
|
2 threads: Avg: 0.4529us Range: [0.4522us, 0.4535us] Ops/s: 4.42M Ops/s/t: 2.21M
|
|
4 threads: Avg: 2.2630us Range: [2.0034us, 2.3220us] Ops/s: 1.77M Ops/s/t: 441.90k
|
|
8 threads: Avg: 0.0116ms Range: [0.0115ms, 0.0116ms] Ops/s: 690.84k Ops/s/t: 86.35k
|
|
Operations per second per thread (weighted average): 680.85k
|
|
|
|
> tbb::concurrent_queue
|
|
2 threads: Avg: 0.3612us Range: [0.3582us, 0.3629us] Ops/s: 5.54M Ops/s/t: 2.77M
|
|
4 threads: Avg: 0.9626us Range: [0.5721us, 1.1233us] Ops/s: 4.16M Ops/s/t: 1.04M
|
|
8 threads: Avg: 5.8279us Range: [5.2630us, 6.2185us] Ops/s: 1.37M Ops/s/t: 171.59k
|
|
Operations per second per thread (weighted average): 1.04M
|
|
|
|
> SimpleLockFreeQueue
|
|
2 threads: Avg: 1.1719us Range: [1.1633us, 1.1786us] Ops/s: 1.71M Ops/s/t: 853.34k
|
|
4 threads: Avg: 4.9511us Range: [3.2836us, 5.4309us] Ops/s: 807.90k Ops/s/t: 201.97k
|
|
8 threads: Avg: 0.0270ms Range: [0.0260ms, 0.0275ms] Ops/s: 295.91k Ops/s/t: 36.99k
|
|
Operations per second per thread (weighted average): 274.78k
|
|
|
|
> LockBasedQueue
|
|
2 threads: Avg: 0.3299us Range: [0.3162us, 0.3417us] Ops/s: 6.06M Ops/s/t: 3.03M
|
|
4 threads: Avg: 5.8541us Range: [5.5493us, 6.1109us] Ops/s: 683.28k Ops/s/t: 170.82k
|
|
8 threads: Avg: 0.0239ms Range: [0.0227ms, 0.0248ms] Ops/s: 334.93k Ops/s/t: 41.87k
|
|
Operations per second per thread (weighted average): 760.33k
|
|
|
|
> std::queue
|
|
(skipping, benchmark not supported...)
|
|
|
|
mostly dequeue bulk:
|
|
(Measures the average speed of dequeueing an item in bulk under light contention)
|
|
> moodycamel::ConcurrentQueue
|
|
Without tokens
|
|
2 threads: Avg: 0.0108us Range: [0.0103us, 0.0109us] Ops/s: 185.78M Ops/s/t: 92.89M
|
|
4 threads: Avg: 0.0373us Range: [0.0372us, 0.0373us] Ops/s: 107.36M Ops/s/t: 26.84M
|
|
8 threads: Avg: 0.1495us Range: [0.1462us, 0.1561us] Ops/s: 53.52M Ops/s/t: 6.69M
|
|
Operations per second per thread (weighted average): 32.67M
|
|
|
|
With tokens
|
|
2 threads: Avg: 3.7186ns Range: [3.7151ns, 3.7217ns] Ops/s: 537.84M Ops/s/t: 268.92M
|
|
4 threads: Avg: 6.9914ns Range: [6.9631ns, 7.0045ns] Ops/s: 572.13M Ops/s/t: 143.03M
|
|
8 threads: Avg: 0.0141us Range: [0.0140us, 0.0143us] Ops/s: 565.65M Ops/s/t: 70.71M
|
|
Operations per second per thread (weighted average): 138.78M
|
|
|
|
> boost::lockfree::queue
|
|
(skipping, benchmark not supported...)
|
|
|
|
> tbb::concurrent_queue
|
|
(skipping, benchmark not supported...)
|
|
|
|
> SimpleLockFreeQueue
|
|
(skipping, benchmark not supported...)
|
|
|
|
> LockBasedQueue
|
|
(skipping, benchmark not supported...)
|
|
|
|
> std::queue
|
|
(skipping, benchmark not supported...)
|
|
|
|
single-producer, multi-consumer (measuring all but 1 thread):
|
|
(Measures the average speed of dequeueing with only one producer, but multiple consumers)
|
|
> moodycamel::ConcurrentQueue
|
|
Without tokens
|
|
2 threads: Avg: 0.2405us Range: [0.2389us, 0.2410us] Ops/s: 4.16M Ops/s/t: 4.16M
|
|
4 threads: Avg: 4.2169us Range: [3.0232us, 4.7858us] Ops/s: 711.43k Ops/s/t: 237.14k
|
|
8 threads: Avg: 5.7117us Range: [4.7950us, 6.1325us] Ops/s: 1.23M Ops/s/t: 175.08k
|
|
16 threads: Avg: 8.3830us Range: [8.1155us, 8.6670us] Ops/s: 1.79M Ops/s/t: 119.29k
|
|
Operations per second per thread (weighted average): 593.96k
|
|
|
|
With tokens
|
|
2 threads: Avg: 0.2474us Range: [0.2461us, 0.2485us] Ops/s: 4.04M Ops/s/t: 4.04M
|
|
4 threads: Avg: 3.3233us Range: [3.1959us, 3.4740us] Ops/s: 902.71k Ops/s/t: 300.90k
|
|
8 threads: Avg: 5.0620us Range: [4.0865us, 5.8400us] Ops/s: 1.38M Ops/s/t: 197.55k
|
|
16 threads: Avg: 0.0105ms Range: [6.5440us, 0.0153ms] Ops/s: 1.42M Ops/s/t: 94.84k
|
|
Operations per second per thread (weighted average): 589.43k
|
|
|
|
> boost::lockfree::queue
|
|
2 threads: Avg: 0.1318us Range: [0.1267us, 0.1376us] Ops/s: 7.59M Ops/s/t: 7.59M
|
|
4 threads: Avg: 0.3896us Range: [0.3650us, 0.4586us] Ops/s: 7.70M Ops/s/t: 2.57M
|
|
8 threads: Avg: 0.8681us Range: [0.8362us, 0.9220us] Ops/s: 8.06M Ops/s/t: 1.15M
|
|
16 threads: Avg: 2.4247us Range: [2.3627us, 2.4832us] Ops/s: 6.19M Ops/s/t: 412.42k
|
|
Operations per second per thread (weighted average): 1.80M
|
|
|
|
> tbb::concurrent_queue
|
|
2 threads: Avg: 0.3890us Range: [0.3863us, 0.3925us] Ops/s: 2.57M Ops/s/t: 2.57M
|
|
4 threads: Avg: 0.3788us Range: [0.2911us, 1.0901us] Ops/s: 7.92M Ops/s/t: 2.64M
|
|
8 threads: Avg: 0.6557us Range: [0.5637us, 1.4010us] Ops/s: 10.67M Ops/s/t: 1.52M
|
|
16 threads: Avg: 4.2543us Range: [2.0247us, 0.0336ms] Ops/s: 3.53M Ops/s/t: 235.06k
|
|
Operations per second per thread (weighted average): 1.31M
|
|
|
|
> SimpleLockFreeQueue
|
|
2 threads: Avg: 0.5829us Range: [0.4318us, 0.6558us] Ops/s: 1.72M Ops/s/t: 1.72M
|
|
4 threads: Avg: 3.7357us Range: [2.8465us, 5.8089us] Ops/s: 803.07k Ops/s/t: 267.69k
|
|
8 threads: Avg: 8.7515us Range: [3.1555us, 0.0191ms] Ops/s: 799.86k Ops/s/t: 114.27k
|
|
16 threads: Avg: 0.0202ms Range: [0.0126ms, 0.0367ms] Ops/s: 742.55k Ops/s/t: 49.50k
|
|
Operations per second per thread (weighted average): 288.98k
|
|
|
|
> LockBasedQueue
|
|
2 threads: Avg: 0.1033us Range: [0.1021us, 0.1044us] Ops/s: 9.68M Ops/s/t: 9.68M
|
|
4 threads: Avg: 2.7103us Range: [2.6647us, 2.7505us] Ops/s: 1.11M Ops/s/t: 368.97k
|
|
8 threads: Avg: 8.2018us Range: [7.9971us, 8.4244us] Ops/s: 853.48k Ops/s/t: 121.93k
|
|
16 threads: Avg: 0.0284ms Range: [0.0277ms, 0.0289ms] Ops/s: 527.88k Ops/s/t: 35.19k
|
|
Operations per second per thread (weighted average): 1.17M
|
|
|
|
> std::queue
|
|
(skipping, benchmark not supported...)
|
|
|
|
single-producer, multi-consumer (pre-produced):
|
|
(Measures the average speed of dequeueing from a queue pre-filled by one thread)
|
|
> moodycamel::ConcurrentQueue
|
|
Without tokens
|
|
1 thread: Avg: 0.0357us Range: [0.0357us, 0.0358us] Ops/s: 27.98M Ops/s/t: 27.98M
|
|
3 threads: Avg: 1.0896us Range: [1.0892us, 1.0903us] Ops/s: 2.75M Ops/s/t: 917.77k
|
|
7 threads: Avg: 7.4992us Range: [7.4811us, 7.5053us] Ops/s: 933.43k Ops/s/t: 133.35k
|
|
15 threads: Avg: 0.0361ms Range: [0.0359ms, 0.0362ms] Ops/s: 414.99k Ops/s/t: 27.67k
|
|
Operations per second per thread (weighted average): 3.25M
|
|
|
|
With tokens
|
|
1 thread: Avg: 0.0312us Range: [0.0312us, 0.0312us] Ops/s: 32.05M Ops/s/t: 32.05M
|
|
3 threads: Avg: 1.8365us Range: [1.8311us, 1.8400us] Ops/s: 1.63M Ops/s/t: 544.51k
|
|
7 threads: Avg: 8.9960us Range: [8.9815us, 9.0019us] Ops/s: 778.12k Ops/s/t: 111.16k
|
|
15 threads: Avg: 0.0384ms Range: [0.0366ms, 0.0393ms] Ops/s: 390.49k Ops/s/t: 26.03k
|
|
Operations per second per thread (weighted average): 3.61M
|
|
|
|
> boost::lockfree::queue
|
|
1 thread: Avg: 0.0292us Range: [0.0291us, 0.0293us] Ops/s: 34.26M Ops/s/t: 34.26M
|
|
3 threads: Avg: 2.4113us Range: [2.3990us, 2.4172us] Ops/s: 1.24M Ops/s/t: 414.71k
|
|
7 threads: Avg: 0.0127ms Range: [0.0125ms, 0.0127ms] Ops/s: 552.70k Ops/s/t: 78.96k
|
|
15 threads: Avg: 0.0676ms Range: [0.0670ms, 0.0681ms] Ops/s: 221.74k Ops/s/t: 14.78k
|
|
Operations per second per thread (weighted average): 3.81M
|
|
|
|
> tbb::concurrent_queue
|
|
1 thread: Avg: 0.0199us Range: [0.0199us, 0.0199us] Ops/s: 50.16M Ops/s/t: 50.16M
|
|
3 threads: Avg: 1.3713us Range: [1.3567us, 1.3797us] Ops/s: 2.19M Ops/s/t: 729.25k
|
|
7 threads: Avg: 4.9943us Range: [4.1482us, 5.3368us] Ops/s: 1.40M Ops/s/t: 200.23k
|
|
15 threads: Avg: 0.0289ms Range: [0.0224ms, 0.0332ms] Ops/s: 519.87k Ops/s/t: 34.66k
|
|
Operations per second per thread (weighted average): 5.63M
|
|
|
|
> SimpleLockFreeQueue
|
|
1 thread: Avg: 0.0245us Range: [0.0244us, 0.0245us] Ops/s: 40.88M Ops/s/t: 40.88M
|
|
3 threads: Avg: 3.0130us Range: [2.3021us, 3.4232us] Ops/s: 995.68k Ops/s/t: 331.89k
|
|
7 threads: Avg: 0.0293ms Range: [0.0260ms, 0.0304ms] Ops/s: 238.94k Ops/s/t: 34.13k
|
|
15 threads: Avg: 0.2168ms Range: [0.2128ms, 0.2191ms] Ops/s: 69.19k Ops/s/t: 4.61k
|
|
Operations per second per thread (weighted average): 4.49M
|
|
|
|
> LockBasedQueue
|
|
1 thread: Avg: 0.0458us Range: [0.0457us, 0.0458us] Ops/s: 21.85M Ops/s/t: 21.85M
|
|
3 threads: Avg: 1.5927us Range: [1.3496us, 1.9027us] Ops/s: 1.88M Ops/s/t: 627.87k
|
|
7 threads: Avg: 0.0235ms Range: [0.0226ms, 0.0239ms] Ops/s: 297.80k Ops/s/t: 42.54k
|
|
15 threads: Avg: 0.0935ms Range: [0.0502ms, 0.1009ms] Ops/s: 160.48k Ops/s/t: 10.70k
|
|
Operations per second per thread (weighted average): 2.50M
|
|
|
|
> std::queue
|
|
(skipping, benchmark not supported...)
|
|
|
|
multi-producer, single-consumer (measuring 1 thread):
|
|
(Measures the average speed of dequeueing with only one consumer, but multiple producers)
|
|
> moodycamel::ConcurrentQueue
|
|
Without tokens
|
|
2 threads: Avg: 0.0729us Range: [0.0726us, 0.0730us] Ops/s: 13.72M Ops/s/t: 13.72M
|
|
4 threads: Avg: 0.0507us Range: [0.0506us, 0.0508us] Ops/s: 19.73M Ops/s/t: 19.73M
|
|
8 threads: Avg: 0.0844us Range: [0.0839us, 0.0849us] Ops/s: 11.85M Ops/s/t: 11.85M
|
|
16 threads: Avg: 0.2197us Range: [0.2190us, 0.2208us] Ops/s: 4.55M Ops/s/t: 4.55M
|
|
Operations per second per thread (weighted average): 12.46M
|
|
|
|
With tokens
|
|
2 threads: Avg: 0.0604us Range: [0.0476us, 0.0624us] Ops/s: 16.55M Ops/s/t: 16.55M
|
|
4 threads: Avg: 0.0356us Range: [0.0354us, 0.0357us] Ops/s: 28.11M Ops/s/t: 28.11M
|
|
8 threads: Avg: 0.0331us Range: [0.0330us, 0.0332us] Ops/s: 30.21M Ops/s/t: 30.21M
|
|
16 threads: Avg: 0.0326us Range: [0.0325us, 0.0326us] Ops/s: 30.70M Ops/s/t: 30.70M
|
|
Operations per second per thread (weighted average): 26.39M
|
|
|
|
> boost::lockfree::queue
|
|
2 threads: Avg: 0.0476us Range: [0.0460us, 0.0491us] Ops/s: 21.02M Ops/s/t: 21.02M
|
|
4 threads: Avg: 0.5888us Range: [0.4460us, 0.6260us] Ops/s: 1.70M Ops/s/t: 1.70M
|
|
8 threads: Avg: 0.2697us Range: [0.1050us, 0.7683us] Ops/s: 3.71M Ops/s/t: 3.71M
|
|
16 threads: Avg: 1.0713us Range: [1.0330us, 1.0920us] Ops/s: 933.44k Ops/s/t: 933.44k
|
|
Operations per second per thread (weighted average): 6.84M
|
|
|
|
> tbb::concurrent_queue
|
|
2 threads: Avg: 0.2368us Range: [0.1076us, 0.2808us] Ops/s: 4.22M Ops/s/t: 4.22M
|
|
4 threads: Avg: 0.2267us Range: [0.2262us, 0.2269us] Ops/s: 4.41M Ops/s/t: 4.41M
|
|
8 threads: Avg: 0.2114us Range: [0.2098us, 0.2120us] Ops/s: 4.73M Ops/s/t: 4.73M
|
|
16 threads: Avg: 0.2197us Range: [0.2171us, 0.2202us] Ops/s: 4.55M Ops/s/t: 4.55M
|
|
Operations per second per thread (weighted average): 4.48M
|
|
|
|
> SimpleLockFreeQueue
|
|
2 threads: Avg: 0.3092us Range: [0.2127us, 0.4384us] Ops/s: 3.23M Ops/s/t: 3.23M
|
|
4 threads: Avg: 0.4952us Range: [0.4757us, 0.5015us] Ops/s: 2.02M Ops/s/t: 2.02M
|
|
8 threads: Avg: 0.3858us Range: [0.3843us, 0.3862us] Ops/s: 2.59M Ops/s/t: 2.59M
|
|
16 threads: Avg: 0.3647us Range: [0.3629us, 0.3660us] Ops/s: 2.74M Ops/s/t: 2.74M
|
|
Operations per second per thread (weighted average): 2.65M
|
|
|
|
> LockBasedQueue
|
|
2 threads: Avg: 0.1043us Range: [0.0981us, 0.1714us] Ops/s: 9.59M Ops/s/t: 9.59M
|
|
4 threads: Avg: 0.7658us Range: [0.7038us, 0.8431us] Ops/s: 1.31M Ops/s/t: 1.31M
|
|
8 threads: Avg: 0.6372us Range: [0.6062us, 0.6615us] Ops/s: 1.57M Ops/s/t: 1.57M
|
|
16 threads: Avg: 0.5428us Range: [0.5134us, 0.5528us] Ops/s: 1.84M Ops/s/t: 1.84M
|
|
Operations per second per thread (weighted average): 3.58M
|
|
|
|
> std::queue
|
|
(skipping, benchmark not supported...)
|
|
|
|
dequeue from empty:
|
|
(Measures the average speed of attempting to dequeue from an empty queue
|
|
(that eight separate threads had at one point enqueued to))
|
|
> moodycamel::ConcurrentQueue
|
|
Without tokens
|
|
1 thread: Avg: 0.1438us Range: [0.0266us, 0.1617us] Ops/s: 6.96M Ops/s/t: 6.96M
|
|
^ Note: No contention -- measures raw failed dequeue speed on empty queue
|
|
2 threads: Avg: 0.2659us Range: [0.0935us, 0.3182us] Ops/s: 7.52M Ops/s/t: 3.76M
|
|
8 threads: Avg: 1.4211us Range: [1.2605us, 1.5397us] Ops/s: 5.63M Ops/s/t: 703.66k
|
|
32 threads: Avg: 0.0106ms Range: [9.5731us, 0.0123ms] Ops/s: 3.02M Ops/s/t: 94.42k
|
|
Operations per second per thread (weighted average): 1.36M
|
|
|
|
With tokens
|
|
1 thread: Avg: 0.0609us Range: [0.0541us, 0.0784us] Ops/s: 16.42M Ops/s/t: 16.42M
|
|
^ Note: No contention -- measures raw failed dequeue speed on empty queue
|
|
2 threads: Avg: 0.1062us Range: [0.0897us, 0.1442us] Ops/s: 18.84M Ops/s/t: 9.42M
|
|
8 threads: Avg: 0.4811us Range: [0.3461us, 0.5677us] Ops/s: 16.63M Ops/s/t: 2.08M
|
|
32 threads: Avg: 5.0579us Range: [3.0195us, 7.0480us] Ops/s: 6.33M Ops/s/t: 197.71k
|
|
Operations per second per thread (weighted average): 3.37M
|
|
|
|
> boost::lockfree::queue
|
|
1 thread: Avg: 4.6996ns Range: [4.6987ns, 4.7002ns] Ops/s: 212.79M Ops/s/t: 212.79M
|
|
^ Note: No contention -- measures raw failed dequeue speed on empty queue
|
|
2 threads: Avg: 8.7301ns Range: [8.7266ns, 8.7359ns] Ops/s: 229.09M Ops/s/t: 114.55M
|
|
8 threads: Avg: 0.0349us Range: [0.0348us, 0.0349us] Ops/s: 229.54M Ops/s/t: 28.69M
|
|
32 threads: Avg: 0.2145us Range: [0.2145us, 0.2145us] Ops/s: 149.19M Ops/s/t: 4.66M
|
|
Operations per second per thread (weighted average): 44.25M
|
|
|
|
> tbb::concurrent_queue
|
|
1 thread: Avg: 3.6913ns Range: [3.6889ns, 3.6921ns] Ops/s: 270.91M Ops/s/t: 270.91M
|
|
^ Note: No contention -- measures raw failed dequeue speed on empty queue
|
|
2 threads: Avg: 7.3977ns Range: [7.3920ns, 7.4032ns] Ops/s: 270.36M Ops/s/t: 135.18M
|
|
8 threads: Avg: 0.0296us Range: [0.0296us, 0.0296us] Ops/s: 270.48M Ops/s/t: 33.81M
|
|
32 threads: Avg: 0.1744us Range: [0.1743us, 0.1745us] Ops/s: 183.45M Ops/s/t: 5.73M
|
|
Operations per second per thread (weighted average): 54.14M
|
|
|
|
> SimpleLockFreeQueue
|
|
1 thread: Avg: 4.8994ns Range: [4.8967ns, 4.9013ns] Ops/s: 204.11M Ops/s/t: 204.11M
|
|
^ Note: No contention -- measures raw failed dequeue speed on empty queue
|
|
2 threads: Avg: 0.0102us Range: [0.0102us, 0.0102us] Ops/s: 196.03M Ops/s/t: 98.02M
|
|
8 threads: Avg: 0.0407us Range: [0.0407us, 0.0408us] Ops/s: 196.35M Ops/s/t: 24.54M
|
|
32 threads: Avg: 0.3004us Range: [0.3000us, 0.3009us] Ops/s: 106.53M Ops/s/t: 3.33M
|
|
Operations per second per thread (weighted average): 39.54M
|
|
|
|
> LockBasedQueue
|
|
1 thread: Avg: 0.0251us Range: [0.0251us, 0.0251us] Ops/s: 39.89M Ops/s/t: 39.89M
|
|
^ Note: No contention -- measures raw failed dequeue speed on empty queue
|
|
2 threads: Avg: 0.1986us Range: [0.1951us, 0.2009us] Ops/s: 10.07M Ops/s/t: 5.03M
|
|
8 threads: Avg: 6.3745us Range: [5.5998us, 6.5522us] Ops/s: 1.25M Ops/s/t: 156.87k
|
|
32 threads: Avg: 0.0864ms Range: [0.0852ms, 0.0876ms] Ops/s: 370.26k Ops/s/t: 11.57k
|
|
Operations per second per thread (weighted average): 4.36M
|
|
|
|
> std::queue
|
|
1 thread: Avg: 0.6708ns Range: [0.6705ns, 0.6710ns] Ops/s: 1.49G Ops/s/t: 1.49G
|
|
^ Note: No contention -- measures raw failed dequeue speed on empty queue
|
|
Operations per second per thread (weighted average): 1.49G
|
|
|
|
enqueue-dequeue pairs:
|
|
(Measures the average operation speed with each thread doing an enqueue
|
|
followed by a dequeue)
|
|
> moodycamel::ConcurrentQueue
|
|
Without tokens
|
|
1 thread: Avg: 0.0214us Range: [0.0214us, 0.0214us] Ops/s: 46.84M Ops/s/t: 46.84M
|
|
^ Note: No contention -- measures speed of immediately dequeueing the item that was just enqueued
|
|
2 threads: Avg: 0.1197us Range: [0.0976us, 0.1773us] Ops/s: 16.71M Ops/s/t: 8.35M
|
|
4 threads: Avg: 1.3761us Range: [1.2900us, 1.4179us] Ops/s: 2.91M Ops/s/t: 726.67k
|
|
8 threads: Avg: 5.7697us Range: [5.6598us, 5.8091us] Ops/s: 1.39M Ops/s/t: 173.32k
|
|
32 threads: Avg: 0.0754ms Range: [0.0748ms, 0.0759ms] Ops/s: 424.33k Ops/s/t: 13.26k
|
|
Operations per second per thread (weighted average): 4.70M
|
|
|
|
With tokens
|
|
1 thread: Avg: 0.0170us Range: [0.0170us, 0.0170us] Ops/s: 58.79M Ops/s/t: 58.79M
|
|
^ Note: No contention -- measures speed of immediately dequeueing the item that was just enqueued
|
|
2 threads: Avg: 0.0498us Range: [0.0485us, 0.0505us] Ops/s: 40.12M Ops/s/t: 20.06M
|
|
4 threads: Avg: 0.1080us Range: [0.1024us, 0.1103us] Ops/s: 37.03M Ops/s/t: 9.26M
|
|
8 threads: Avg: 0.3397us Range: [0.3264us, 0.3478us] Ops/s: 23.55M Ops/s/t: 2.94M
|
|
32 threads: Avg: 9.0299us Range: [8.7799us, 9.2197us] Ops/s: 3.54M Ops/s/t: 110.74k
|
|
Operations per second per thread (weighted average): 8.89M
|
|
|
|
> boost::lockfree::queue
|
|
1 thread: Avg: 0.0328us Range: [0.0328us, 0.0328us] Ops/s: 30.45M Ops/s/t: 30.45M
|
|
^ Note: No contention -- measures speed of immediately dequeueing the item that was just enqueued
|
|
2 threads: Avg: 1.1448us Range: [0.4117us, 1.2515us] Ops/s: 1.75M Ops/s/t: 873.54k
|
|
4 threads: Avg: 4.6480us Range: [4.0236us, 4.8069us] Ops/s: 860.58k Ops/s/t: 215.15k
|
|
8 threads: Avg: 0.0198ms Range: [0.0190ms, 0.0208ms] Ops/s: 403.50k Ops/s/t: 50.44k
|
|
32 threads: Avg: 0.4098ms Range: [0.4018ms, 0.4142ms] Ops/s: 78.09k Ops/s/t: 2.44k
|
|
Operations per second per thread (weighted average): 2.50M
|
|
|
|
> tbb::concurrent_queue
|
|
1 thread: Avg: 0.0224us Range: [0.0224us, 0.0224us] Ops/s: 44.66M Ops/s/t: 44.66M
|
|
^ Note: No contention -- measures speed of immediately dequeueing the item that was just enqueued
|
|
2 threads: Avg: 0.5825us Range: [0.5799us, 0.5844us] Ops/s: 3.43M Ops/s/t: 1.72M
|
|
4 threads: Avg: 2.5531us Range: [2.1310us, 2.6899us] Ops/s: 1.57M Ops/s/t: 391.67k
|
|
8 threads: Avg: 0.0101ms Range: [0.0101ms, 0.0102ms] Ops/s: 789.08k Ops/s/t: 98.64k
|
|
32 threads: Avg: 0.1343ms Range: [0.1311ms, 0.1371ms] Ops/s: 238.28k Ops/s/t: 7.45k
|
|
Operations per second per thread (weighted average): 3.74M
|
|
|
|
> SimpleLockFreeQueue
|
|
1 thread: Avg: 0.0429us Range: [0.0429us, 0.0429us] Ops/s: 23.30M Ops/s/t: 23.30M
|
|
^ Note: No contention -- measures speed of immediately dequeueing the item that was just enqueued
|
|
2 threads: Avg: 0.9275us Range: [0.9030us, 0.9385us] Ops/s: 2.16M Ops/s/t: 1.08M
|
|
4 threads: Avg: 5.2883us Range: [5.2680us, 5.2959us] Ops/s: 756.39k Ops/s/t: 189.10k
|
|
8 threads: Avg: 0.0297ms Range: [0.0267ms, 0.0315ms] Ops/s: 269.42k Ops/s/t: 33.68k
|
|
32 threads: Avg: 0.6158ms Range: [0.6028ms, 0.6242ms] Ops/s: 51.96k Ops/s/t: 1.62k
|
|
Operations per second per thread (weighted average): 1.96M
|
|
|
|
> LockBasedQueue
|
|
1 thread: Avg: 0.0503us Range: [0.0503us, 0.0504us] Ops/s: 19.86M Ops/s/t: 19.86M
|
|
^ Note: No contention -- measures speed of immediately dequeueing the item that was just enqueued
|
|
2 threads: Avg: 0.4039us Range: [0.3996us, 0.4073us] Ops/s: 4.95M Ops/s/t: 2.48M
|
|
4 threads: Avg: 4.8038us Range: [4.0986us, 5.4712us] Ops/s: 832.68k Ops/s/t: 208.17k
|
|
8 threads: Avg: 0.0324ms Range: [0.0286ms, 0.0335ms] Ops/s: 246.75k Ops/s/t: 30.84k
|
|
32 threads: Avg: 0.3925ms Range: [0.3335ms, 0.4503ms] Ops/s: 81.52k Ops/s/t: 2.55k
|
|
Operations per second per thread (weighted average): 1.85M
|
|
|
|
> std::queue
|
|
1 thread: Avg: 2.7071ns Range: [2.7069ns, 2.7074ns] Ops/s: 369.39M Ops/s/t: 369.39M
|
|
^ Note: No contention -- measures speed of immediately dequeueing the item that was just enqueued
|
|
Operations per second per thread (weighted average): 369.39M
|
|
|
|
heavy concurrent:
|
|
(Measures the average operation speed with many threads under heavy load)
|
|
> moodycamel::ConcurrentQueue
|
|
Without tokens
|
|
2 threads: Avg: 0.1211us Range: [0.1163us, 0.1233us] Ops/s: 16.51M Ops/s/t: 8.26M
|
|
3 threads: Avg: 0.4467us Range: [0.3247us, 0.4672us] Ops/s: 6.72M Ops/s/t: 2.24M
|
|
4 threads: Avg: 0.9646us Range: [0.8831us, 1.0081us] Ops/s: 4.15M Ops/s/t: 1.04M
|
|
8 threads: Avg: 2.3965us Range: [2.3389us, 2.4271us] Ops/s: 3.34M Ops/s/t: 417.27k
|
|
12 threads: Avg: 4.2654us Range: [4.2042us, 4.3185us] Ops/s: 2.81M Ops/s/t: 234.44k
|
|
16 threads: Avg: 6.5713us Range: [6.1844us, 6.6608us] Ops/s: 2.43M Ops/s/t: 152.18k
|
|
32 threads: Avg: 0.0330ms Range: [0.0318ms, 0.0333ms] Ops/s: 970.98k Ops/s/t: 30.34k
|
|
48 threads: Avg: 0.0612ms Range: [0.0592ms, 0.0625ms] Ops/s: 784.29k Ops/s/t: 16.34k
|
|
Operations per second per thread (weighted average): 731.94k
|
|
|
|
With tokens
|
|
2 threads: Avg: 0.0491us Range: [0.0434us, 0.0508us] Ops/s: 40.77M Ops/s/t: 20.39M
|
|
3 threads: Avg: 0.1539us Range: [0.1536us, 0.1541us] Ops/s: 19.50M Ops/s/t: 6.50M
|
|
4 threads: Avg: 0.4153us Range: [0.3947us, 0.4259us] Ops/s: 9.63M Ops/s/t: 2.41M
|
|
8 threads: Avg: 0.7587us Range: [0.5327us, 0.8894us] Ops/s: 10.54M Ops/s/t: 1.32M
|
|
12 threads: Avg: 1.3762us Range: [1.2403us, 1.5247us] Ops/s: 8.72M Ops/s/t: 726.65k
|
|
16 threads: Avg: 2.6196us Range: [2.2556us, 2.8414us] Ops/s: 6.11M Ops/s/t: 381.74k
|
|
32 threads: Avg: 0.0162ms Range: [9.3597us, 0.0203ms] Ops/s: 1.97M Ops/s/t: 61.66k
|
|
48 threads: Avg: 0.0143ms Range: [0.0111ms, 0.0173ms] Ops/s: 3.35M Ops/s/t: 69.85k
|
|
Operations per second per thread (weighted average): 1.91M
|
|
|
|
> boost::lockfree::queue
|
|
2 threads: Avg: 1.2196us Range: [1.2159us, 1.2220us] Ops/s: 1.64M Ops/s/t: 819.95k
|
|
3 threads: Avg: 2.2890us Range: [2.2667us, 2.3046us] Ops/s: 1.31M Ops/s/t: 436.88k
|
|
4 threads: Avg: 2.9693us Range: [2.9229us, 2.9822us] Ops/s: 1.35M Ops/s/t: 336.78k
|
|
8 threads: Avg: 8.9729us Range: [8.8928us, 9.0693us] Ops/s: 891.57k Ops/s/t: 111.45k
|
|
12 threads: Avg: 0.0208ms Range: [0.0205ms, 0.0209ms] Ops/s: 577.87k Ops/s/t: 48.16k
|
|
16 threads: Avg: 0.0369ms Range: [0.0355ms, 0.0376ms] Ops/s: 433.75k Ops/s/t: 27.11k
|
|
32 threads: Avg: 0.3347ms Range: [0.3205ms, 0.3437ms] Ops/s: 95.62k Ops/s/t: 2.99k
|
|
48 threads: Avg: 0.7204ms Range: [0.7067ms, 0.7367ms] Ops/s: 66.63k Ops/s/t: 1.39k
|
|
Operations per second per thread (weighted average): 114.43k
|
|
|
|
> tbb::concurrent_queue
|
|
2 threads: Avg: 0.5035us Range: [0.4944us, 0.5064us] Ops/s: 3.97M Ops/s/t: 1.99M
|
|
3 threads: Avg: 1.1369us Range: [1.1313us, 1.1402us] Ops/s: 2.64M Ops/s/t: 879.61k
|
|
4 threads: Avg: 1.8101us Range: [1.8060us, 1.8148us] Ops/s: 2.21M Ops/s/t: 552.45k
|
|
8 threads: Avg: 8.2873us Range: [7.6817us, 8.3997us] Ops/s: 965.34k Ops/s/t: 120.67k
|
|
12 threads: Avg: 0.0182ms Range: [0.0174ms, 0.0187ms] Ops/s: 657.96k Ops/s/t: 54.83k
|
|
16 threads: Avg: 0.0403ms Range: [0.0354ms, 0.0419ms] Ops/s: 397.38k Ops/s/t: 24.84k
|
|
32 threads: Avg: 0.1491ms Range: [0.1353ms, 0.1525ms] Ops/s: 214.58k Ops/s/t: 6.71k
|
|
48 threads: Avg: 0.3679ms Range: [0.3642ms, 0.3710ms] Ops/s: 130.46k Ops/s/t: 2.72k
|
|
Operations per second per thread (weighted average): 218.55k
|
|
|
|
> SimpleLockFreeQueue
|
|
2 threads: Avg: 0.8196us Range: [0.3717us, 0.8868us] Ops/s: 2.44M Ops/s/t: 1.22M
|
|
3 threads: Avg: 1.6837us Range: [1.6827us, 1.6845us] Ops/s: 1.78M Ops/s/t: 593.94k
|
|
4 threads: Avg: 4.5087us Range: [3.7115us, 4.9618us] Ops/s: 887.18k Ops/s/t: 221.79k
|
|
8 threads: Avg: 0.0222ms Range: [0.0199ms, 0.0232ms] Ops/s: 360.16k Ops/s/t: 45.02k
|
|
12 threads: Avg: 0.0532ms Range: [0.0515ms, 0.0538ms] Ops/s: 225.48k Ops/s/t: 18.79k
|
|
16 threads: Avg: 0.0920ms Range: [0.0743ms, 0.0959ms] Ops/s: 174.00k Ops/s/t: 10.88k
|
|
32 threads: Avg: 0.4328ms Range: [0.3996ms, 0.4452ms] Ops/s: 73.94k Ops/s/t: 2.31k
|
|
48 threads: Avg: 0.8777ms Range: [0.8347ms, 0.8909ms] Ops/s: 54.69k Ops/s/t: 1.14k
|
|
Operations per second per thread (weighted average): 123.28k
|
|
|
|
> LockBasedQueue
|
|
2 threads: Avg: 0.3872us Range: [0.3804us, 0.3916us] Ops/s: 5.17M Ops/s/t: 2.58M
|
|
3 threads: Avg: 3.1674us Range: [2.7845us, 3.3797us] Ops/s: 947.16k Ops/s/t: 315.72k
|
|
4 threads: Avg: 6.6254us Range: [6.4227us, 6.7718us] Ops/s: 603.74k Ops/s/t: 150.93k
|
|
8 threads: Avg: 0.0247ms Range: [0.0213ms, 0.0259ms] Ops/s: 323.74k Ops/s/t: 40.47k
|
|
12 threads: Avg: 0.0514ms Range: [0.0499ms, 0.0524ms] Ops/s: 233.56k Ops/s/t: 19.46k
|
|
16 threads: Avg: 0.0895ms Range: [0.0873ms, 0.0908ms] Ops/s: 178.78k Ops/s/t: 11.17k
|
|
32 threads: Avg: 0.3723ms Range: [0.3626ms, 0.3779ms] Ops/s: 85.95k Ops/s/t: 2.69k
|
|
48 threads: Avg: 0.7242ms Range: [0.7031ms, 0.7378ms] Ops/s: 66.28k Ops/s/t: 1.38k
|
|
Operations per second per thread (weighted average): 169.58k
|
|
|
|
> std::queue
|
|
(skipping, benchmark not supported...)
|
|
|
|
Overall average operations per second per thread (where higher-concurrency runs have more weight):
|
|
(Take this summary with a grain of salt -- look at the individual benchmark results for a much
|
|
better idea of how the queues measure up to each other):
|
|
moodycamel::ConcurrentQueue (including bulk): 18.50M
|
|
boost::lockfree::queue: 3.27M
|
|
tbb::concurrent_queue: 4.21M
|
|
SimpleLockFreeQueue: 2.90M
|
|
LockBasedQueue: 1.12M
|
|
std::queue (single thread only): 436.10M
|