Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --- New run (Sat Nov 8 09:25:39 2014) ---
- Running 64-bit benchmarks on a Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz
- 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.9722us Range: [0.9643us, 0.9821us] Ops/s: 2.06M Ops/s/t: 1.03M
- 3 threads: Avg: 1.7465us Range: [1.7187us, 1.7696us] Ops/s: 1.72M Ops/s/t: 572.58k
- 4 threads: Avg: 2.7140us Range: [2.6731us, 2.7633us] Ops/s: 1.47M Ops/s/t: 368.46k
- 8 threads: Avg: 9.4939us Range: [9.1272us, 9.6693us] Ops/s: 842.64k Ops/s/t: 105.33k
- 12 threads: Avg: 0.0205ms Range: [0.0197ms, 0.0209ms] Ops/s: 585.74k Ops/s/t: 48.81k
- 16 threads: Avg: 0.0354ms Range: [0.0351ms, 0.0357ms] Ops/s: 451.54k Ops/s/t: 28.22k
- 32 threads: Avg: 0.1032ms Range: [0.0844ms, 0.1094ms] Ops/s: 310.10k Ops/s/t: 9.69k
- Operations per second per thread (weighted average): 180.99k
- With tokens
- 2 threads: Avg: 0.7037us Range: [0.6161us, 0.7463us] Ops/s: 2.84M Ops/s/t: 1.42M
- 3 threads: Avg: 1.2278us Range: [1.2141us, 1.2522us] Ops/s: 2.44M Ops/s/t: 814.47k
- 4 threads: Avg: 2.0493us Range: [2.0371us, 2.0605us] Ops/s: 1.95M Ops/s/t: 487.97k
- 8 threads: Avg: 7.6238us Range: [7.4938us, 7.7129us] Ops/s: 1.05M Ops/s/t: 131.17k
- 12 threads: Avg: 0.0161ms Range: [0.0158ms, 0.0162ms] Ops/s: 744.82k Ops/s/t: 62.07k
- 16 threads: Avg: 0.0263ms Range: [0.0261ms, 0.0265ms] Ops/s: 608.35k Ops/s/t: 38.02k
- 32 threads: Avg: 0.0654ms Range: [0.0639ms, 0.0664ms] Ops/s: 489.02k Ops/s/t: 15.28k
- Operations per second per thread (weighted average): 247.49k
- > boost::lockfree::queue
- 2 threads: Avg: 1.1693us Range: [1.1468us, 1.1890us] Ops/s: 1.71M Ops/s/t: 855.23k
- 3 threads: Avg: 1.9754us Range: [1.9626us, 1.9921us] Ops/s: 1.52M Ops/s/t: 506.24k
- 4 threads: Avg: 3.3885us Range: [3.3395us, 3.4239us] Ops/s: 1.18M Ops/s/t: 295.12k
- 8 threads: Avg: 0.0161ms Range: [0.0156ms, 0.0164ms] Ops/s: 495.88k Ops/s/t: 61.99k
- 12 threads: Avg: 0.0592ms Range: [0.0579ms, 0.0608ms] Ops/s: 202.64k Ops/s/t: 16.89k
- 16 threads: Avg: 0.1053ms Range: [0.0600ms, 0.1219ms] Ops/s: 151.95k Ops/s/t: 9.50k
- 32 threads: Avg: 0.4552ms Range: [0.4487ms, 0.4647ms] Ops/s: 70.30k Ops/s/t: 2.20k
- Operations per second per thread (weighted average): 140.35k
- > SimpleLockFreeQueue
- 2 threads: Avg: 1.1810us Range: [1.1725us, 1.1853us] Ops/s: 1.69M Ops/s/t: 846.72k
- 3 threads: Avg: 1.9826us Range: [1.9242us, 2.0053us] Ops/s: 1.51M Ops/s/t: 504.38k
- 4 threads: Avg: 3.6579us Range: [3.6334us, 3.6857us] Ops/s: 1.09M Ops/s/t: 273.38k
- 8 threads: Avg: 0.0194ms Range: [0.0189ms, 0.0197ms] Ops/s: 413.40k Ops/s/t: 51.68k
- 12 threads: Avg: 0.0655ms Range: [0.0648ms, 0.0659ms] Ops/s: 183.33k Ops/s/t: 15.28k
- 16 threads: Avg: 0.1455ms Range: [0.1419ms, 0.1495ms] Ops/s: 110.00k Ops/s/t: 6.88k
- 32 threads: Avg: 0.6181ms Range: [0.6038ms, 0.6343ms] Ops/s: 51.78k Ops/s/t: 1.62k
- Operations per second per thread (weighted average): 135.27k
- > LockBasedQueue
- 2 threads: Avg: 1.8504us Range: [1.7820us, 1.9172us] Ops/s: 1.08M Ops/s/t: 540.42k
- 3 threads: Avg: 3.9396us Range: [3.8182us, 4.0805us] Ops/s: 761.50k Ops/s/t: 253.83k
- 4 threads: Avg: 9.6751us Range: [9.3798us, 9.8473us] Ops/s: 413.43k Ops/s/t: 103.36k
- 8 threads: Avg: 0.0462ms Range: [0.0448ms, 0.0475ms] Ops/s: 173.00k Ops/s/t: 21.62k
- 12 threads: Avg: 0.1076ms Range: [0.1060ms, 0.1089ms] Ops/s: 111.48k Ops/s/t: 9.29k
- 16 threads: Avg: 0.1980ms Range: [0.1891ms, 0.2031ms] Ops/s: 80.82k Ops/s/t: 5.05k
- 32 threads: Avg: 0.9612ms Range: [0.8963ms, 0.9933ms] Ops/s: 33.29k Ops/s/t: 1.04k
- Operations per second per thread (weighted average): 72.53k
- > 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.0135us Range: [0.0134us, 0.0135us] Ops/s: 74.34M Ops/s/t: 74.34M
- 2 threads: Avg: 0.0247us Range: [0.0246us, 0.0247us] Ops/s: 81.14M Ops/s/t: 40.57M
- 4 threads: Avg: 0.0491us Range: [0.0484us, 0.0499us] Ops/s: 81.53M Ops/s/t: 20.38M
- 8 threads: Avg: 0.0972us Range: [0.0970us, 0.0975us] Ops/s: 82.34M Ops/s/t: 10.29M
- 32 threads: Avg: 0.6991us Range: [0.6824us, 0.7208us] Ops/s: 45.77M Ops/s/t: 1.43M
- Operations per second per thread (weighted average): 16.25M
- With tokens
- 1 thread: Avg: 9.2814ns Range: [9.2435ns, 9.3282ns] Ops/s: 107.74M Ops/s/t: 107.74M
- 2 threads: Avg: 0.0201us Range: [0.0200us, 0.0202us] Ops/s: 99.73M Ops/s/t: 49.87M
- 4 threads: Avg: 0.0397us Range: [0.0395us, 0.0399us] Ops/s: 100.88M Ops/s/t: 25.22M
- 8 threads: Avg: 0.0801us Range: [0.0796us, 0.0804us] Ops/s: 99.88M Ops/s/t: 12.49M
- 32 threads: Avg: 0.4861us Range: [0.4833us, 0.4888us] Ops/s: 65.83M Ops/s/t: 2.06M
- Operations per second per thread (weighted average): 21.37M
- > boost::lockfree::queue
- 1 thread: Avg: 0.0524us Range: [0.0524us, 0.0524us] Ops/s: 19.09M Ops/s/t: 19.09M
- 2 threads: Avg: 1.2931us Range: [1.2874us, 1.2971us] Ops/s: 1.55M Ops/s/t: 773.33k
- 4 threads: Avg: 7.3424us Range: [6.1107us, 7.6941us] Ops/s: 544.78k Ops/s/t: 136.20k
- 8 threads: Avg: 0.0401ms Range: [0.0319ms, 0.0425ms] Ops/s: 199.58k Ops/s/t: 24.95k
- 32 threads: Avg: 0.6946ms Range: [0.6833ms, 0.6998ms] Ops/s: 46.07k Ops/s/t: 1.44k
- Operations per second per thread (weighted average): 1.59M
- > SimpleLockFreeQueue
- 1 thread: Avg: 0.0458us Range: [0.0457us, 0.0458us] Ops/s: 21.86M Ops/s/t: 21.86M
- 2 threads: Avg: 1.1061us Range: [1.0967us, 1.1101us] Ops/s: 1.81M Ops/s/t: 904.07k
- 4 threads: Avg: 4.6285us Range: [4.6207us, 4.6391us] Ops/s: 864.22k Ops/s/t: 216.05k
- 8 threads: Avg: 0.0174ms Range: [0.0173ms, 0.0175ms] Ops/s: 459.97k Ops/s/t: 57.50k
- 32 threads: Avg: 0.1523ms Range: [0.1515ms, 0.1529ms] Ops/s: 210.11k Ops/s/t: 6.57k
- Operations per second per thread (weighted average): 1.84M
- > LockBasedQueue
- 1 thread: Avg: 0.0544us Range: [0.0543us, 0.0544us] Ops/s: 18.40M Ops/s/t: 18.40M
- 2 threads: Avg: 0.4327us Range: [0.4273us, 0.4360us] Ops/s: 4.62M Ops/s/t: 2.31M
- 4 threads: Avg: 7.1693us Range: [6.9000us, 7.3192us] Ops/s: 557.93k Ops/s/t: 139.48k
- 8 threads: Avg: 0.0226ms Range: [0.0219ms, 0.0229ms] Ops/s: 354.52k Ops/s/t: 44.32k
- 32 threads: Avg: 0.2876ms Range: [0.2779ms, 0.2958ms] Ops/s: 111.27k Ops/s/t: 3.48k
- Operations per second per thread (weighted average): 1.71M
- > std::queue
- 1 thread: Avg: 3.6895ns Range: [3.6870ns, 3.6914ns] Ops/s: 271.04M Ops/s/t: 271.04M
- Operations per second per thread (weighted average): 271.04M
- 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.0125us Range: [0.0125us, 0.0125us] Ops/s: 80.02M Ops/s/t: 80.02M
- 2 threads: Avg: 0.0359us Range: [0.0359us, 0.0360us] Ops/s: 55.66M Ops/s/t: 27.83M
- 4 threads: Avg: 0.1369us Range: [0.1363us, 0.1375us] Ops/s: 29.21M Ops/s/t: 7.30M
- 8 threads: Avg: 0.5476us Range: [0.5375us, 0.5523us] Ops/s: 14.61M Ops/s/t: 1.83M
- 32 threads: Avg: 0.0171ms Range: [0.0169ms, 0.0172ms] Ops/s: 1.87M Ops/s/t: 58.53k
- Operations per second per thread (weighted average): 10.81M
- With tokens
- 1 thread: Avg: 7.4867ns Range: [7.4709ns, 7.5035ns] Ops/s: 133.57M Ops/s/t: 133.57M
- 2 threads: Avg: 0.0159us Range: [0.0158us, 0.0161us] Ops/s: 125.42M Ops/s/t: 62.71M
- 4 threads: Avg: 0.0314us Range: [0.0313us, 0.0316us] Ops/s: 127.25M Ops/s/t: 31.81M
- 8 threads: Avg: 0.0638us Range: [0.0635us, 0.0642us] Ops/s: 125.46M Ops/s/t: 15.68M
- 32 threads: Avg: 0.3848us Range: [0.3779us, 0.3878us] Ops/s: 83.16M Ops/s/t: 2.60M
- Operations per second per thread (weighted average): 26.74M
- > boost::lockfree::queue
- 1 thread: Avg: 0.0336us Range: [0.0334us, 0.0337us] Ops/s: 29.76M Ops/s/t: 29.76M
- 2 threads: Avg: 1.4450us Range: [1.1839us, 1.5761us] Ops/s: 1.38M Ops/s/t: 692.03k
- 4 threads: Avg: 8.6435us Range: [8.5695us, 8.6942us] Ops/s: 462.77k Ops/s/t: 115.69k
- 8 threads: Avg: 0.0491ms Range: [0.0483ms, 0.0499ms] Ops/s: 163.04k Ops/s/t: 20.38k
- 32 threads: Avg: 0.5627ms Range: [0.5548ms, 0.5681ms] Ops/s: 56.87k Ops/s/t: 1.78k
- Operations per second per thread (weighted average): 2.41M
- > SimpleLockFreeQueue
- 1 thread: Avg: 0.0457us Range: [0.0457us, 0.0457us] Ops/s: 21.89M Ops/s/t: 21.89M
- 2 threads: Avg: 1.1844us Range: [1.1792us, 1.1869us] Ops/s: 1.69M Ops/s/t: 844.33k
- 4 threads: Avg: 4.8006us Range: [3.4845us, 5.1406us] Ops/s: 833.24k Ops/s/t: 208.31k
- 8 threads: Avg: 0.0202ms Range: [0.0201ms, 0.0202ms] Ops/s: 396.94k Ops/s/t: 49.62k
- 32 threads: Avg: 0.2578ms Range: [0.2575ms, 0.2580ms] Ops/s: 124.13k Ops/s/t: 3.88k
- Operations per second per thread (weighted average): 1.83M
- > LockBasedQueue
- 1 thread: Avg: 0.0549us Range: [0.0549us, 0.0550us] Ops/s: 18.20M Ops/s/t: 18.20M
- 2 threads: Avg: 0.4395us Range: [0.4364us, 0.4421us] Ops/s: 4.55M Ops/s/t: 2.28M
- 4 threads: Avg: 7.0350us Range: [6.8198us, 7.2042us] Ops/s: 568.59k Ops/s/t: 142.15k
- 8 threads: Avg: 0.0234ms Range: [0.0229ms, 0.0238ms] Ops/s: 341.78k Ops/s/t: 42.72k
- 32 threads: Avg: 0.2932ms Range: [0.2815ms, 0.2988ms] Ops/s: 109.16k Ops/s/t: 3.41k
- Operations per second per thread (weighted average): 1.69M
- > std::queue
- 1 thread: Avg: 4.6422ns Range: [4.6371ns, 4.6463ns] Ops/s: 215.41M Ops/s/t: 215.41M
- Operations per second per thread (weighted average): 215.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: 3.8374ns Range: [3.8266ns, 3.8411ns] Ops/s: 260.59M Ops/s/t: 260.59M
- 2 threads: Avg: 8.4786ns Range: [8.4572ns, 8.4953ns] Ops/s: 235.89M Ops/s/t: 117.94M
- 4 threads: Avg: 0.0175us Range: [0.0174us, 0.0176us] Ops/s: 229.05M Ops/s/t: 57.26M
- 8 threads: Avg: 0.0343us Range: [0.0341us, 0.0345us] Ops/s: 233.44M Ops/s/t: 29.18M
- 32 threads: Avg: 0.3014us Range: [0.2866us, 0.3146us] Ops/s: 106.18M Ops/s/t: 3.32M
- Operations per second per thread (weighted average): 49.86M
- With tokens
- 1 thread: Avg: 3.7481ns Range: [3.7437ns, 3.7520ns] Ops/s: 266.80M Ops/s/t: 266.80M
- 2 threads: Avg: 8.5005ns Range: [8.4872ns, 8.5106ns] Ops/s: 235.28M Ops/s/t: 117.64M
- 4 threads: Avg: 0.0179us Range: [0.0178us, 0.0179us] Ops/s: 224.03M Ops/s/t: 56.01M
- 8 threads: Avg: 0.0385us Range: [0.0383us, 0.0387us] Ops/s: 207.83M Ops/s/t: 25.98M
- 32 threads: Avg: 0.3718us Range: [0.3157us, 0.3868us] Ops/s: 86.06M Ops/s/t: 2.69M
- Operations per second per thread (weighted average): 49.14M
- > boost::lockfree::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: 3.8546ns Range: [3.8525ns, 3.8560ns] Ops/s: 259.43M Ops/s/t: 259.43M
- 2 threads: Avg: 8.9874ns Range: [8.6774ns, 9.2670ns] Ops/s: 222.53M Ops/s/t: 111.27M
- 4 threads: Avg: 0.0186us Range: [0.0184us, 0.0187us] Ops/s: 215.38M Ops/s/t: 53.85M
- 8 threads: Avg: 0.0402us Range: [0.0399us, 0.0405us] Ops/s: 199.22M Ops/s/t: 24.90M
- 32 threads: Avg: 0.4145us Range: [0.4102us, 0.4208us] Ops/s: 77.20M Ops/s/t: 2.41M
- Operations per second per thread (weighted average): 47.18M
- With tokens
- 1 thread: Avg: 3.7540ns Range: [3.7495ns, 3.7598ns] Ops/s: 266.38M Ops/s/t: 266.38M
- 2 threads: Avg: 8.7038ns Range: [8.5970ns, 8.9752ns] Ops/s: 229.79M Ops/s/t: 114.89M
- 4 threads: Avg: 0.0181us Range: [0.0179us, 0.0182us] Ops/s: 220.67M Ops/s/t: 55.17M
- 8 threads: Avg: 0.0390us Range: [0.0387us, 0.0393us] Ops/s: 205.06M Ops/s/t: 25.63M
- 32 threads: Avg: 0.3836us Range: [0.3732us, 0.3872us] Ops/s: 83.43M Ops/s/t: 2.61M
- Operations per second per thread (weighted average): 48.56M
- > boost::lockfree::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.0354us Range: [0.0353us, 0.0355us] Ops/s: 28.22M Ops/s/t: 28.22M
- 2 threads: Avg: 0.7492us Range: [0.7468us, 0.7524us] Ops/s: 2.67M Ops/s/t: 1.33M
- 4 threads: Avg: 2.7223us Range: [2.6985us, 2.7482us] Ops/s: 1.47M Ops/s/t: 367.33k
- 8 threads: Avg: 9.4388us Range: [9.2227us, 9.6074us] Ops/s: 847.56k Ops/s/t: 105.95k
- 32 threads: Avg: 0.0874ms Range: [0.0865ms, 0.0885ms] Ops/s: 366.00k Ops/s/t: 11.44k
- Operations per second per thread (weighted average): 2.42M
- With tokens
- 1 thread: Avg: 0.0317us Range: [0.0316us, 0.0317us] Ops/s: 31.60M Ops/s/t: 31.60M
- 2 threads: Avg: 0.0707us Range: [0.0706us, 0.0707us] Ops/s: 28.31M Ops/s/t: 14.15M
- 4 threads: Avg: 0.1446us Range: [0.1433us, 0.1461us] Ops/s: 27.67M Ops/s/t: 6.92M
- 8 threads: Avg: 0.3049us Range: [0.3013us, 0.3075us] Ops/s: 26.24M Ops/s/t: 3.28M
- 32 threads: Avg: 0.0107ms Range: [9.3196us, 0.0115ms] Ops/s: 2.98M Ops/s/t: 93.06k
- Operations per second per thread (weighted average): 5.83M
- > boost::lockfree::queue
- 1 thread: Avg: 0.0294us Range: [0.0293us, 0.0295us] Ops/s: 34.02M Ops/s/t: 34.02M
- 2 threads: Avg: 1.2895us Range: [1.2843us, 1.2927us] Ops/s: 1.55M Ops/s/t: 775.52k
- 4 threads: Avg: 5.0618us Range: [5.0439us, 5.0729us] Ops/s: 790.24k Ops/s/t: 197.56k
- 8 threads: Avg: 0.0207ms Range: [0.0206ms, 0.0207ms] Ops/s: 386.62k Ops/s/t: 48.33k
- 32 threads: Avg: 0.3266ms Range: [0.3249ms, 0.3273ms] Ops/s: 97.99k Ops/s/t: 3.06k
- Operations per second per thread (weighted average): 2.77M
- > SimpleLockFreeQueue
- 1 thread: Avg: 0.0246us Range: [0.0245us, 0.0246us] Ops/s: 40.70M Ops/s/t: 40.70M
- 2 threads: Avg: 1.4351us Range: [1.4312us, 1.4396us] Ops/s: 1.39M Ops/s/t: 696.82k
- 4 threads: Avg: 0.0101ms Range: [0.0100ms, 0.0101ms] Ops/s: 396.38k Ops/s/t: 99.09k
- 8 threads: Avg: 0.0534ms Range: [0.0531ms, 0.0537ms] Ops/s: 149.75k Ops/s/t: 18.72k
- 32 threads: Avg: 0.8992ms Range: [0.8895ms, 0.9056ms] Ops/s: 35.59k Ops/s/t: 1.11k
- Operations per second per thread (weighted average): 3.25M
- > LockBasedQueue
- 1 thread: Avg: 0.0471us Range: [0.0471us, 0.0471us] Ops/s: 21.22M Ops/s/t: 21.22M
- 2 threads: Avg: 0.4164us Range: [0.4069us, 0.4203us] Ops/s: 4.80M Ops/s/t: 2.40M
- 4 threads: Avg: 0.0101ms Range: [9.8774us, 0.0104ms] Ops/s: 396.16k Ops/s/t: 99.04k
- 8 threads: Avg: 0.0375ms Range: [0.0372ms, 0.0381ms] Ops/s: 213.12k Ops/s/t: 26.64k
- 32 threads: Avg: 0.4838ms Range: [0.4727ms, 0.4920ms] Ops/s: 66.14k Ops/s/t: 2.07k
- Operations per second per thread (weighted average): 1.93M
- > std::queue
- 1 thread: Avg: 3.3497ns Range: [3.3484ns, 3.3509ns] Ops/s: 298.53M Ops/s/t: 298.53M
- Operations per second per thread (weighted average): 298.53M
- 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.2840ns Range: [1.2806ns, 1.2867ns] Ops/s: 778.80M Ops/s/t: 778.80M
- 2 threads: Avg: 9.4111ns Range: [9.3789ns, 9.4458ns] Ops/s: 212.51M Ops/s/t: 106.26M
- 4 threads: Avg: 0.0410us Range: [0.0408us, 0.0412us] Ops/s: 97.45M Ops/s/t: 24.36M
- 8 threads: Avg: 0.1620us Range: [0.1613us, 0.1624us] Ops/s: 49.38M Ops/s/t: 6.17M
- 32 threads: Avg: 2.4876us Range: [2.4797us, 2.4945us] Ops/s: 12.86M Ops/s/t: 402.00k
- Operations per second per thread (weighted average): 77.33M
- With tokens
- 1 thread: Avg: 1.0747ns Range: [1.0698ns, 1.0762ns] Ops/s: 930.51M Ops/s/t: 930.51M
- 2 threads: Avg: 2.4705ns Range: [2.4615ns, 2.4751ns] Ops/s: 809.56M Ops/s/t: 404.78M
- 4 threads: Avg: 5.8198ns Range: [5.6016ns, 5.9633ns] Ops/s: 687.31M Ops/s/t: 171.83M
- 8 threads: Avg: 0.0110us Range: [0.0109us, 0.0111us] Ops/s: 725.32M Ops/s/t: 90.67M
- 32 threads: Avg: 0.1218us Range: [0.1212us, 0.1227us] Ops/s: 262.78M Ops/s/t: 8.21M
- Operations per second per thread (weighted average): 166.63M
- > boost::lockfree::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.1162us Range: [0.1157us, 0.1165us] Ops/s: 17.21M Ops/s/t: 8.60M
- 4 threads: Avg: 0.1640us Range: [0.1618us, 0.1672us] Ops/s: 24.39M Ops/s/t: 6.10M
- 8 threads: Avg: 0.7167us Range: [0.6679us, 0.7641us] Ops/s: 11.16M Ops/s/t: 1.40M
- 32 threads: Avg: 0.0105ms Range: [0.0104ms, 0.0106ms] Ops/s: 3.05M Ops/s/t: 95.20k
- Operations per second per thread (weighted average): 2.42M
- With tokens
- 2 threads: Avg: 0.1502us Range: [0.1495us, 0.1506us] Ops/s: 13.32M Ops/s/t: 6.66M
- 4 threads: Avg: 0.0866us Range: [0.0863us, 0.0871us] Ops/s: 46.21M Ops/s/t: 11.55M
- 8 threads: Avg: 0.4570us Range: [0.1711us, 0.5777us] Ops/s: 17.51M Ops/s/t: 2.19M
- 32 threads: Avg: 6.4731us Range: [2.6813us, 0.0119ms] Ops/s: 4.94M Ops/s/t: 154.48k
- Operations per second per thread (weighted average): 3.33M
- > boost::lockfree::queue
- 2 threads: Avg: 0.1087us Range: [0.1027us, 0.1128us] Ops/s: 18.40M Ops/s/t: 9.20M
- 4 threads: Avg: 4.4906us Range: [4.4457us, 4.5548us] Ops/s: 890.76k Ops/s/t: 222.69k
- 8 threads: Avg: 0.0264ms Range: [0.0263ms, 0.0266ms] Ops/s: 302.83k Ops/s/t: 37.85k
- 32 threads: Avg: 0.4813ms Range: [0.4753ms, 0.4900ms] Ops/s: 66.49k Ops/s/t: 2.08k
- Operations per second per thread (weighted average): 1.14M
- > SimpleLockFreeQueue
- 2 threads: Avg: 0.4796us Range: [0.3359us, 0.5374us] Ops/s: 4.17M Ops/s/t: 2.09M
- 4 threads: Avg: 4.6122us Range: [4.5971us, 4.6278us] Ops/s: 867.26k Ops/s/t: 216.81k
- 8 threads: Avg: 0.0176ms Range: [0.0174ms, 0.0179ms] Ops/s: 453.56k Ops/s/t: 56.70k
- 32 threads: Avg: 0.2416ms Range: [0.2406ms, 0.2421ms] Ops/s: 132.48k Ops/s/t: 4.14k
- Operations per second per thread (weighted average): 299.69k
- > LockBasedQueue
- 2 threads: Avg: 0.2316us Range: [0.2290us, 0.2341us] Ops/s: 8.64M Ops/s/t: 4.32M
- 4 threads: Avg: 7.3192us Range: [6.6544us, 7.8236us] Ops/s: 546.50k Ops/s/t: 136.63k
- 8 threads: Avg: 0.0329ms Range: [0.0318ms, 0.0347ms] Ops/s: 242.99k Ops/s/t: 30.37k
- 32 threads: Avg: 0.3866ms Range: [0.3185ms, 0.4130ms] Ops/s: 82.77k Ops/s/t: 2.59k
- Operations per second per thread (weighted average): 544.65k
- > 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.0605ns Range: [8.0516ns, 8.0732ns] Ops/s: 248.12M Ops/s/t: 124.06M
- 4 threads: Avg: 0.0178us Range: [0.0176us, 0.0180us] Ops/s: 224.48M Ops/s/t: 56.12M
- 8 threads: Avg: 0.0394us Range: [0.0366us, 0.0418us] Ops/s: 203.09M Ops/s/t: 25.39M
- 32 threads: Avg: 0.2697us Range: [0.2579us, 0.2966us] Ops/s: 118.66M Ops/s/t: 3.71M
- Operations per second per thread (weighted average): 31.97M
- With tokens
- 2 threads: Avg: 8.3222ns Range: [8.2949ns, 8.3455ns] Ops/s: 240.32M Ops/s/t: 120.16M
- 4 threads: Avg: 0.0172us Range: [0.0158us, 0.0180us] Ops/s: 232.72M Ops/s/t: 58.18M
- 8 threads: Avg: 0.0370us Range: [0.0369us, 0.0371us] Ops/s: 215.96M Ops/s/t: 27.00M
- 32 threads: Avg: 0.3011us Range: [0.2991us, 0.3035us] Ops/s: 106.29M Ops/s/t: 3.32M
- Operations per second per thread (weighted average): 32.05M
- > boost::lockfree::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.1311us Range: [0.1278us, 0.1356us] Ops/s: 15.25M Ops/s/t: 7.63M
- 4 threads: Avg: 1.7159us Range: [1.7125us, 1.7215us] Ops/s: 2.33M Ops/s/t: 582.80k
- 8 threads: Avg: 5.0742us Range: [4.9893us, 5.1404us] Ops/s: 1.58M Ops/s/t: 197.07k
- Operations per second per thread (weighted average): 2.00M
- With tokens
- 2 threads: Avg: 0.1510us Range: [0.1503us, 0.1525us] Ops/s: 13.24M Ops/s/t: 6.62M
- 4 threads: Avg: 1.4700us Range: [1.4130us, 1.4857us] Ops/s: 2.72M Ops/s/t: 680.28k
- 8 threads: Avg: 1.8810us Range: [1.3824us, 2.5874us] Ops/s: 4.25M Ops/s/t: 531.63k
- Operations per second per thread (weighted average): 1.96M
- > boost::lockfree::queue
- 2 threads: Avg: 0.8132us Range: [0.7350us, 0.8655us] Ops/s: 2.46M Ops/s/t: 1.23M
- 4 threads: Avg: 2.3574us Range: [2.3413us, 2.3657us] Ops/s: 1.70M Ops/s/t: 424.20k
- 8 threads: Avg: 0.0110ms Range: [0.0110ms, 0.0111ms] Ops/s: 724.76k Ops/s/t: 90.60k
- Operations per second per thread (weighted average): 455.54k
- > SimpleLockFreeQueue
- 2 threads: Avg: 0.8551us Range: [0.8225us, 0.8705us] Ops/s: 2.34M Ops/s/t: 1.17M
- 4 threads: Avg: 4.7072us Range: [4.5622us, 4.7671us] Ops/s: 849.76k Ops/s/t: 212.44k
- 8 threads: Avg: 0.0271ms Range: [0.0261ms, 0.0275ms] Ops/s: 295.05k Ops/s/t: 36.88k
- Operations per second per thread (weighted average): 349.72k
- > LockBasedQueue
- 2 threads: Avg: 0.3509us Range: [0.1678us, 0.4276us] Ops/s: 5.70M Ops/s/t: 2.85M
- 4 threads: Avg: 8.6771us Range: [8.2011us, 9.1746us] Ops/s: 460.98k Ops/s/t: 115.25k
- 8 threads: Avg: 0.0240ms Range: [0.0233ms, 0.0246ms] Ops/s: 333.25k Ops/s/t: 41.66k
- Operations per second per thread (weighted average): 701.36k
- > 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: 9.8789ns Range: [9.4461ns, 0.0100us] Ops/s: 202.45M Ops/s/t: 101.23M
- 4 threads: Avg: 0.0319us Range: [0.0318us, 0.0320us] Ops/s: 125.36M Ops/s/t: 31.34M
- 8 threads: Avg: 0.1666us Range: [0.1658us, 0.1679us] Ops/s: 48.03M Ops/s/t: 6.00M
- Operations per second per thread (weighted average): 35.69M
- With tokens
- 2 threads: Avg: 3.1924ns Range: [3.1797ns, 3.2033ns] Ops/s: 626.49M Ops/s/t: 313.25M
- 4 threads: Avg: 6.6697ns Range: [6.6164ns, 6.7504ns] Ops/s: 599.73M Ops/s/t: 149.93M
- 8 threads: Avg: 0.0154us Range: [0.0150us, 0.0156us] Ops/s: 519.76M Ops/s/t: 64.97M
- Operations per second per thread (weighted average): 148.43M
- > boost::lockfree::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.2256us Range: [0.2245us, 0.2264us] Ops/s: 4.43M Ops/s/t: 4.43M
- 4 threads: Avg: 3.4318us Range: [3.2495us, 3.7797us] Ops/s: 874.17k Ops/s/t: 291.39k
- 8 threads: Avg: 5.6953us Range: [5.2493us, 6.7433us] Ops/s: 1.23M Ops/s/t: 175.58k
- 16 threads: Avg: 0.0113ms Range: [0.0100ms, 0.0131ms] Ops/s: 1.33M Ops/s/t: 88.85k
- Operations per second per thread (weighted average): 621.17k
- With tokens
- 2 threads: Avg: 0.1899us Range: [0.1876us, 0.1919us] Ops/s: 5.27M Ops/s/t: 5.27M
- 4 threads: Avg: 3.6025us Range: [3.3529us, 3.9702us] Ops/s: 832.76k Ops/s/t: 277.59k
- 8 threads: Avg: 7.4073us Range: [7.3407us, 7.5404us] Ops/s: 945.02k Ops/s/t: 135.00k
- 16 threads: Avg: 0.0145ms Range: [0.0105ms, 0.0170ms] Ops/s: 1.03M Ops/s/t: 68.74k
- Operations per second per thread (weighted average): 688.60k
- > boost::lockfree::queue
- 2 threads: Avg: 0.1334us Range: [0.1161us, 0.1753us] Ops/s: 7.49M Ops/s/t: 7.49M
- 4 threads: Avg: 0.2326us Range: [0.2230us, 0.2513us] Ops/s: 12.90M Ops/s/t: 4.30M
- 8 threads: Avg: 0.4849us Range: [0.4723us, 0.5000us] Ops/s: 14.44M Ops/s/t: 2.06M
- 16 threads: Avg: 1.0460us Range: [1.0260us, 1.0678us] Ops/s: 14.34M Ops/s/t: 955.98k
- Operations per second per thread (weighted average): 2.60M
- > SimpleLockFreeQueue
- 2 threads: Avg: 0.6093us Range: [0.6054us, 0.6113us] Ops/s: 1.64M Ops/s/t: 1.64M
- 4 threads: Avg: 6.7782us Range: [6.7631us, 6.7924us] Ops/s: 442.60k Ops/s/t: 147.53k
- 8 threads: Avg: 0.0235ms Range: [0.0182ms, 0.0301ms] Ops/s: 298.41k Ops/s/t: 42.63k
- 16 threads: Avg: 0.0523ms Range: [0.0492ms, 0.0557ms] Ops/s: 287.00k Ops/s/t: 19.13k
- Operations per second per thread (weighted average): 225.24k
- > LockBasedQueue
- 2 threads: Avg: 0.3584us Range: [0.3269us, 0.3872us] Ops/s: 2.79M Ops/s/t: 2.79M
- 4 threads: Avg: 3.7071us Range: [3.5573us, 3.9738us] Ops/s: 809.26k Ops/s/t: 269.75k
- 8 threads: Avg: 8.6680us Range: [8.6402us, 8.7191us] Ops/s: 807.57k Ops/s/t: 115.37k
- 16 threads: Avg: 0.0292ms Range: [0.0290ms, 0.0294ms] Ops/s: 513.34k Ops/s/t: 34.22k
- Operations per second per thread (weighted average): 399.41k
- > 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.0355us Range: [0.0354us, 0.0356us] Ops/s: 28.13M Ops/s/t: 28.13M
- 3 threads: Avg: 1.0150us Range: [1.0132us, 1.0159us] Ops/s: 2.96M Ops/s/t: 985.22k
- 7 threads: Avg: 7.3523us Range: [7.2042us, 7.4180us] Ops/s: 952.09k Ops/s/t: 136.01k
- 15 threads: Avg: 0.0359ms Range: [0.0358ms, 0.0360ms] Ops/s: 417.69k Ops/s/t: 27.85k
- Operations per second per thread (weighted average): 3.28M
- With tokens
- 1 thread: Avg: 0.0316us Range: [0.0316us, 0.0317us] Ops/s: 31.60M Ops/s/t: 31.60M
- 3 threads: Avg: 1.0374us Range: [1.0351us, 1.0412us] Ops/s: 2.89M Ops/s/t: 963.99k
- 7 threads: Avg: 7.4213us Range: [7.3824us, 7.4363us] Ops/s: 943.23k Ops/s/t: 134.75k
- 15 threads: Avg: 0.0360ms Range: [0.0358ms, 0.0361ms] Ops/s: 416.88k Ops/s/t: 27.79k
- Operations per second per thread (weighted average): 3.65M
- > boost::lockfree::queue
- 1 thread: Avg: 0.0294us Range: [0.0293us, 0.0295us] Ops/s: 34.01M Ops/s/t: 34.01M
- 3 threads: Avg: 2.4851us Range: [2.4733us, 2.4919us] Ops/s: 1.21M Ops/s/t: 402.39k
- 7 threads: Avg: 0.0148ms Range: [0.0147ms, 0.0149ms] Ops/s: 471.83k Ops/s/t: 67.40k
- 15 threads: Avg: 0.0765ms Range: [0.0759ms, 0.0770ms] Ops/s: 195.98k Ops/s/t: 13.07k
- Operations per second per thread (weighted average): 3.78M
- > SimpleLockFreeQueue
- 1 thread: Avg: 0.0247us Range: [0.0245us, 0.0248us] Ops/s: 40.47M Ops/s/t: 40.47M
- 3 threads: Avg: 3.2708us Range: [3.2477us, 3.2878us] Ops/s: 917.20k Ops/s/t: 305.73k
- 7 threads: Avg: 0.0355ms Range: [0.0350ms, 0.0357ms] Ops/s: 197.26k Ops/s/t: 28.18k
- 15 threads: Avg: 0.2644ms Range: [0.2617ms, 0.2665ms] Ops/s: 56.73k Ops/s/t: 3.78k
- Operations per second per thread (weighted average): 4.44M
- > LockBasedQueue
- 1 thread: Avg: 0.0473us Range: [0.0472us, 0.0475us] Ops/s: 21.13M Ops/s/t: 21.13M
- 3 threads: Avg: 3.6570us Range: [3.4832us, 3.7815us] Ops/s: 820.33k Ops/s/t: 273.44k
- 7 threads: Avg: 0.0183ms Range: [0.0169ms, 0.0209ms] Ops/s: 383.30k Ops/s/t: 54.76k
- 15 threads: Avg: 0.0977ms Range: [0.0914ms, 0.1002ms] Ops/s: 153.54k Ops/s/t: 10.24k
- Operations per second per thread (weighted average): 2.36M
- > 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.0728us Range: [0.0727us, 0.0729us] Ops/s: 13.74M Ops/s/t: 13.74M
- 4 threads: Avg: 0.0510us Range: [0.0507us, 0.0512us] Ops/s: 19.61M Ops/s/t: 19.61M
- 8 threads: Avg: 0.0833us Range: [0.0826us, 0.0839us] Ops/s: 12.00M Ops/s/t: 12.00M
- 16 threads: Avg: 0.2114us Range: [0.2097us, 0.2129us] Ops/s: 4.73M Ops/s/t: 4.73M
- Operations per second per thread (weighted average): 12.52M
- With tokens
- 2 threads: Avg: 0.0658us Range: [0.0656us, 0.0660us] Ops/s: 15.20M Ops/s/t: 15.20M
- 4 threads: Avg: 0.0367us Range: [0.0364us, 0.0370us] Ops/s: 27.26M Ops/s/t: 27.26M
- 8 threads: Avg: 0.0340us Range: [0.0340us, 0.0341us] Ops/s: 29.39M Ops/s/t: 29.39M
- 16 threads: Avg: 0.0338us Range: [0.0337us, 0.0339us] Ops/s: 29.59M Ops/s/t: 29.59M
- Operations per second per thread (weighted average): 25.36M
- > boost::lockfree::queue
- 2 threads: Avg: 0.0429us Range: [0.0408us, 0.0447us] Ops/s: 23.33M Ops/s/t: 23.33M
- 4 threads: Avg: 0.6488us Range: [0.6370us, 0.6529us] Ops/s: 1.54M Ops/s/t: 1.54M
- 8 threads: Avg: 0.9254us Range: [0.9196us, 0.9302us] Ops/s: 1.08M Ops/s/t: 1.08M
- 16 threads: Avg: 1.1262us Range: [1.1000us, 1.1541us] Ops/s: 887.96k Ops/s/t: 887.96k
- Operations per second per thread (weighted average): 6.71M
- > SimpleLockFreeQueue
- 2 threads: Avg: 0.4409us Range: [0.4356us, 0.4450us] Ops/s: 2.27M Ops/s/t: 2.27M
- 4 threads: Avg: 0.4296us Range: [0.4285us, 0.4311us] Ops/s: 2.33M Ops/s/t: 2.33M
- 8 threads: Avg: 0.3303us Range: [0.3005us, 0.3387us] Ops/s: 3.03M Ops/s/t: 3.03M
- 16 threads: Avg: 0.3170us Range: [0.3164us, 0.3178us] Ops/s: 3.15M Ops/s/t: 3.15M
- Operations per second per thread (weighted average): 2.69M
- > LockBasedQueue
- 2 threads: Avg: 0.2293us Range: [0.1656us, 0.2887us] Ops/s: 4.36M Ops/s/t: 4.36M
- 4 threads: Avg: 0.6890us Range: [0.6386us, 0.7483us] Ops/s: 1.45M Ops/s/t: 1.45M
- 8 threads: Avg: 0.6091us Range: [0.5905us, 0.6252us] Ops/s: 1.64M Ops/s/t: 1.64M
- 16 threads: Avg: 0.4977us Range: [0.4912us, 0.5052us] Ops/s: 2.01M Ops/s/t: 2.01M
- Operations per second per thread (weighted average): 2.37M
- > 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.1533us Range: [0.0268us, 0.1953us] Ops/s: 6.52M Ops/s/t: 6.52M
- ^ Note: No contention -- measures raw failed dequeue speed on empty queue
- 2 threads: Avg: 0.2570us Range: [0.0958us, 0.3858us] Ops/s: 7.78M Ops/s/t: 3.89M
- 8 threads: Avg: 1.4926us Range: [1.2811us, 1.5480us] Ops/s: 5.36M Ops/s/t: 669.99k
- 32 threads: Avg: 0.0105ms Range: [7.9929us, 0.0115ms] Ops/s: 3.06M Ops/s/t: 95.54k
- Operations per second per thread (weighted average): 1.33M
- With tokens
- 1 thread: Avg: 0.0564us Range: [0.0223us, 0.0682us] Ops/s: 17.72M Ops/s/t: 17.72M
- ^ Note: No contention -- measures raw failed dequeue speed on empty queue
- 2 threads: Avg: 0.1173us Range: [0.1158us, 0.1189us] Ops/s: 17.05M Ops/s/t: 8.53M
- 8 threads: Avg: 0.9135us Range: [0.4582us, 1.0500us] Ops/s: 8.76M Ops/s/t: 1.09M
- 32 threads: Avg: 8.0154us Range: [2.8338us, 9.9510us] Ops/s: 3.99M Ops/s/t: 124.76k
- Operations per second per thread (weighted average): 3.08M
- > boost::lockfree::queue
- 1 thread: Avg: 3.7037ns Range: [3.7013ns, 3.7050ns] Ops/s: 270.00M Ops/s/t: 270.00M
- ^ Note: No contention -- measures raw failed dequeue speed on empty queue
- 2 threads: Avg: 8.0666ns Range: [8.0564ns, 8.0832ns] Ops/s: 247.94M Ops/s/t: 123.97M
- 8 threads: Avg: 0.0322us Range: [0.0322us, 0.0322us] Ops/s: 248.39M Ops/s/t: 31.05M
- 32 threads: Avg: 0.1946us Range: [0.1932us, 0.1975us] Ops/s: 164.45M Ops/s/t: 5.14M
- Operations per second per thread (weighted average): 51.58M
- > SimpleLockFreeQueue
- 1 thread: Avg: 5.0452ns Range: [5.0382ns, 5.0507ns] Ops/s: 198.21M Ops/s/t: 198.21M
- ^ Note: No contention -- measures raw failed dequeue speed on empty queue
- 2 threads: Avg: 0.0105us Range: [0.0104us, 0.0105us] Ops/s: 190.87M Ops/s/t: 95.43M
- 8 threads: Avg: 0.0418us Range: [0.0417us, 0.0420us] Ops/s: 191.24M Ops/s/t: 23.90M
- 32 threads: Avg: 0.3016us Range: [0.3009us, 0.3025us] Ops/s: 106.12M Ops/s/t: 3.32M
- Operations per second per thread (weighted average): 38.49M
- > LockBasedQueue
- 1 thread: Avg: 0.0250us Range: [0.0249us, 0.0250us] Ops/s: 40.01M Ops/s/t: 40.01M
- ^ Note: No contention -- measures raw failed dequeue speed on empty queue
- 2 threads: Avg: 0.1973us Range: [0.1928us, 0.2009us] Ops/s: 10.14M Ops/s/t: 5.07M
- 8 threads: Avg: 7.1925us Range: [7.1054us, 7.2650us] Ops/s: 1.11M Ops/s/t: 139.03k
- 32 threads: Avg: 0.0902ms Range: [0.0877ms, 0.0927ms] Ops/s: 354.76k Ops/s/t: 11.09k
- Operations per second per thread (weighted average): 4.37M
- > std::queue
- 1 thread: Avg: 0.6726ns Range: [0.6724ns, 0.6728ns] 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.0209us Range: [0.0209us, 0.0211us] Ops/s: 47.81M Ops/s/t: 47.81M
- ^ Note: No contention -- measures speed of immediately dequeueing the item that was just enqueued
- 2 threads: Avg: 0.2992us Range: [0.1643us, 0.3385us] Ops/s: 6.68M Ops/s/t: 3.34M
- 4 threads: Avg: 1.5971us Range: [1.5668us, 1.6323us] Ops/s: 2.50M Ops/s/t: 626.15k
- 8 threads: Avg: 6.6631us Range: [6.3374us, 6.9573us] Ops/s: 1.20M Ops/s/t: 150.08k
- 32 threads: Avg: 0.0750ms Range: [0.0738ms, 0.0765ms] Ops/s: 426.46k Ops/s/t: 13.33k
- Operations per second per thread (weighted average): 4.21M
- With tokens
- 1 thread: Avg: 0.0167us Range: [0.0167us, 0.0167us] Ops/s: 59.92M Ops/s/t: 59.92M
- ^ Note: No contention -- measures speed of immediately dequeueing the item that was just enqueued
- 2 threads: Avg: 0.0433us Range: [0.0426us, 0.0437us] Ops/s: 46.24M Ops/s/t: 23.12M
- 4 threads: Avg: 0.1144us Range: [0.1099us, 0.1168us] Ops/s: 34.98M Ops/s/t: 8.74M
- 8 threads: Avg: 0.3348us Range: [0.3110us, 0.3513us] Ops/s: 23.89M Ops/s/t: 2.99M
- 32 threads: Avg: 8.8864us Range: [8.6909us, 9.1329us] Ops/s: 3.60M Ops/s/t: 112.53k
- Operations per second per thread (weighted average): 9.24M
- > boost::lockfree::queue
- 1 thread: Avg: 0.0334us Range: [0.0334us, 0.0334us] Ops/s: 29.94M Ops/s/t: 29.94M
- ^ Note: No contention -- measures speed of immediately dequeueing the item that was just enqueued
- 2 threads: Avg: 1.0739us Range: [1.0646us, 1.0871us] Ops/s: 1.86M Ops/s/t: 931.21k
- 4 threads: Avg: 4.9304us Range: [4.9195us, 4.9383us] Ops/s: 811.29k Ops/s/t: 202.82k
- 8 threads: Avg: 0.0234ms Range: [0.0233ms, 0.0235ms] Ops/s: 341.55k Ops/s/t: 42.69k
- 32 threads: Avg: 0.3942ms Range: [0.3895ms, 0.3993ms] Ops/s: 81.18k Ops/s/t: 2.54k
- Operations per second per thread (weighted average): 2.46M
- > SimpleLockFreeQueue
- 1 thread: Avg: 0.0385us Range: [0.0385us, 0.0385us] Ops/s: 25.95M Ops/s/t: 25.95M
- ^ Note: No contention -- measures speed of immediately dequeueing the item that was just enqueued
- 2 threads: Avg: 0.9441us Range: [0.9370us, 0.9551us] Ops/s: 2.12M Ops/s/t: 1.06M
- 4 threads: Avg: 4.8343us Range: [3.7781us, 5.2675us] Ops/s: 827.41k Ops/s/t: 206.85k
- 8 threads: Avg: 0.0313ms Range: [0.0309ms, 0.0315ms] Ops/s: 255.59k Ops/s/t: 31.95k
- 32 threads: Avg: 0.6217ms Range: [0.5822ms, 0.6380ms] Ops/s: 51.47k Ops/s/t: 1.61k
- Operations per second per thread (weighted average): 2.17M
- > LockBasedQueue
- 1 thread: Avg: 0.0520us Range: [0.0520us, 0.0520us] Ops/s: 19.23M Ops/s/t: 19.23M
- ^ Note: No contention -- measures speed of immediately dequeueing the item that was just enqueued
- 2 threads: Avg: 0.4032us Range: [0.3945us, 0.4099us] Ops/s: 4.96M Ops/s/t: 2.48M
- 4 threads: Avg: 6.9201us Range: [6.7457us, 6.9956us] Ops/s: 578.02k Ops/s/t: 144.51k
- 8 threads: Avg: 0.0348ms Range: [0.0340ms, 0.0353ms] Ops/s: 229.95k Ops/s/t: 28.74k
- 32 threads: Avg: 0.5090ms Range: [0.4900ms, 0.5330ms] Ops/s: 62.87k Ops/s/t: 1.96k
- Operations per second per thread (weighted average): 1.79M
- > std::queue
- 1 thread: Avg: 2.7266ns Range: [2.7253ns, 2.7271ns] Ops/s: 366.76M Ops/s/t: 366.76M
- ^ Note: No contention -- measures speed of immediately dequeueing the item that was just enqueued
- Operations per second per thread (weighted average): 366.76M
- heavy concurrent:
- (Measures the average operation speed with many threads under heavy load)
- > moodycamel::ConcurrentQueue
- Without tokens
- 2 threads: Avg: 0.3046us Range: [0.2968us, 0.3116us] Ops/s: 6.57M Ops/s/t: 3.28M
- 3 threads: Avg: 0.5399us Range: [0.5048us, 0.5707us] Ops/s: 5.56M Ops/s/t: 1.85M
- 4 threads: Avg: 0.9670us Range: [0.9609us, 0.9730us] Ops/s: 4.14M Ops/s/t: 1.03M
- 8 threads: Avg: 2.2217us Range: [2.2024us, 2.2410us] Ops/s: 3.60M Ops/s/t: 450.10k
- 16 threads: Avg: 6.3541us Range: [6.2198us, 6.4482us] Ops/s: 2.52M Ops/s/t: 157.38k
- 32 threads: Avg: 0.0338ms Range: [0.0329ms, 0.0341ms] Ops/s: 947.06k Ops/s/t: 29.60k
- Operations per second per thread (weighted average): 680.02k
- With tokens
- 2 threads: Avg: 0.0434us Range: [0.0428us, 0.0444us] Ops/s: 46.04M Ops/s/t: 23.02M
- 3 threads: Avg: 0.1618us Range: [0.1545us, 0.1731us] Ops/s: 18.54M Ops/s/t: 6.18M
- 4 threads: Avg: 0.4171us Range: [0.3514us, 0.4466us] Ops/s: 9.59M Ops/s/t: 2.40M
- 8 threads: Avg: 1.0202us Range: [0.8877us, 1.1089us] Ops/s: 7.84M Ops/s/t: 980.23k
- 16 threads: Avg: 3.4776us Range: [2.7165us, 4.0696us] Ops/s: 4.60M Ops/s/t: 287.56k
- 32 threads: Avg: 0.0319ms Range: [0.0202ms, 0.0386ms] Ops/s: 1.00M Ops/s/t: 31.37k
- Operations per second per thread (weighted average): 2.96M
- > boost::lockfree::queue
- 2 threads: Avg: 1.1867us Range: [1.1810us, 1.1911us] Ops/s: 1.69M Ops/s/t: 842.70k
- 3 threads: Avg: 2.2442us Range: [2.2213us, 2.2647us] Ops/s: 1.34M Ops/s/t: 445.59k
- 4 threads: Avg: 2.9144us Range: [2.8592us, 2.9486us] Ops/s: 1.37M Ops/s/t: 343.13k
- 8 threads: Avg: 8.1100us Range: [7.6439us, 8.3011us] Ops/s: 986.44k Ops/s/t: 123.30k
- 16 threads: Avg: 0.0341ms Range: [0.0330ms, 0.0349ms] Ops/s: 468.78k Ops/s/t: 29.30k
- 32 threads: Avg: 0.3451ms Range: [0.3256ms, 0.3603ms] Ops/s: 92.74k Ops/s/t: 2.90k
- Operations per second per thread (weighted average): 177.64k
- > SimpleLockFreeQueue
- 2 threads: Avg: 0.8704us Range: [0.8156us, 0.9058us] Ops/s: 2.30M Ops/s/t: 1.15M
- 3 threads: Avg: 2.2284us Range: [2.2216us, 2.2328us] Ops/s: 1.35M Ops/s/t: 448.75k
- 4 threads: Avg: 4.5420us Range: [4.5235us, 4.5510us] Ops/s: 880.67k Ops/s/t: 220.17k
- 8 threads: Avg: 0.0199ms Range: [0.0198ms, 0.0200ms] Ops/s: 401.66k Ops/s/t: 50.21k
- 16 threads: Avg: 0.0833ms Range: [0.0826ms, 0.0839ms] Ops/s: 191.98k Ops/s/t: 12.00k
- 32 threads: Avg: 0.4502ms Range: [0.4109ms, 0.4624ms] Ops/s: 71.08k Ops/s/t: 2.22k
- Operations per second per thread (weighted average): 172.70k
- > LockBasedQueue
- 2 threads: Avg: 0.4030us Range: [0.3929us, 0.4106us] Ops/s: 4.96M Ops/s/t: 2.48M
- 3 threads: Avg: 3.1890us Range: [2.1707us, 3.6277us] Ops/s: 940.74k Ops/s/t: 313.58k
- 4 threads: Avg: 9.7849us Range: [8.8413us, 0.0102ms] Ops/s: 408.79k Ops/s/t: 102.20k
- 8 threads: Avg: 0.0308ms Range: [0.0295ms, 0.0320ms] Ops/s: 259.89k Ops/s/t: 32.49k
- 16 threads: Avg: 0.1139ms Range: [0.1045ms, 0.1262ms] Ops/s: 140.44k Ops/s/t: 8.78k
- 32 threads: Avg: 0.4163ms Range: [0.3921ms, 0.4307ms] Ops/s: 76.86k Ops/s/t: 2.40k
- Operations per second per thread (weighted average): 249.39k
- > 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): 23.31M
- boost::lockfree::queue: 5.57M
- SimpleLockFreeQueue: 4.25M
- LockBasedQueue: 1.35M
- std::queue (single thread only): 527.72M
Advertisement
Add Comment
Please, Sign In to add comment