wimrijnders

Concurrent queues benchmark results 32-core cc2.8xlarge

Nov 8th, 2014
406
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 45.20 KB | None | 0 0
  1. --- New run (Sat Nov 8 09:25:39 2014) ---
  2. Running 64-bit benchmarks on a Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz
  3. Note that these are synthetic benchmarks. Take them with a grain of salt.
  4.  
  5. Legend:
  6. 'Avg': Average time taken per operation, normalized to be per thread
  7. 'Range': The minimum and maximum times taken per operation (per thread)
  8. 'Ops/s': Overall operations per second
  9. 'Ops/s/t': Operations per second per thread (inverse of 'Avg')
  10. Operations include those that fail (e.g. because the queue is empty).
  11. Each logical enqueue/dequeue counts as an individual operation when in bulk.
  12.  
  13. balanced:
  14. (Measures the average operation speed with multiple symmetrical threads
  15. under reasonable load -- small random intervals between accesses)
  16. > moodycamel::ConcurrentQueue
  17. Without tokens
  18. 2 threads: Avg: 0.9722us Range: [0.9643us, 0.9821us] Ops/s: 2.06M Ops/s/t: 1.03M
  19. 3 threads: Avg: 1.7465us Range: [1.7187us, 1.7696us] Ops/s: 1.72M Ops/s/t: 572.58k
  20. 4 threads: Avg: 2.7140us Range: [2.6731us, 2.7633us] Ops/s: 1.47M Ops/s/t: 368.46k
  21. 8 threads: Avg: 9.4939us Range: [9.1272us, 9.6693us] Ops/s: 842.64k Ops/s/t: 105.33k
  22. 12 threads: Avg: 0.0205ms Range: [0.0197ms, 0.0209ms] Ops/s: 585.74k Ops/s/t: 48.81k
  23. 16 threads: Avg: 0.0354ms Range: [0.0351ms, 0.0357ms] Ops/s: 451.54k Ops/s/t: 28.22k
  24. 32 threads: Avg: 0.1032ms Range: [0.0844ms, 0.1094ms] Ops/s: 310.10k Ops/s/t: 9.69k
  25. Operations per second per thread (weighted average): 180.99k
  26.  
  27. With tokens
  28. 2 threads: Avg: 0.7037us Range: [0.6161us, 0.7463us] Ops/s: 2.84M Ops/s/t: 1.42M
  29. 3 threads: Avg: 1.2278us Range: [1.2141us, 1.2522us] Ops/s: 2.44M Ops/s/t: 814.47k
  30. 4 threads: Avg: 2.0493us Range: [2.0371us, 2.0605us] Ops/s: 1.95M Ops/s/t: 487.97k
  31. 8 threads: Avg: 7.6238us Range: [7.4938us, 7.7129us] Ops/s: 1.05M Ops/s/t: 131.17k
  32. 12 threads: Avg: 0.0161ms Range: [0.0158ms, 0.0162ms] Ops/s: 744.82k Ops/s/t: 62.07k
  33. 16 threads: Avg: 0.0263ms Range: [0.0261ms, 0.0265ms] Ops/s: 608.35k Ops/s/t: 38.02k
  34. 32 threads: Avg: 0.0654ms Range: [0.0639ms, 0.0664ms] Ops/s: 489.02k Ops/s/t: 15.28k
  35. Operations per second per thread (weighted average): 247.49k
  36.  
  37. > boost::lockfree::queue
  38. 2 threads: Avg: 1.1693us Range: [1.1468us, 1.1890us] Ops/s: 1.71M Ops/s/t: 855.23k
  39. 3 threads: Avg: 1.9754us Range: [1.9626us, 1.9921us] Ops/s: 1.52M Ops/s/t: 506.24k
  40. 4 threads: Avg: 3.3885us Range: [3.3395us, 3.4239us] Ops/s: 1.18M Ops/s/t: 295.12k
  41. 8 threads: Avg: 0.0161ms Range: [0.0156ms, 0.0164ms] Ops/s: 495.88k Ops/s/t: 61.99k
  42. 12 threads: Avg: 0.0592ms Range: [0.0579ms, 0.0608ms] Ops/s: 202.64k Ops/s/t: 16.89k
  43. 16 threads: Avg: 0.1053ms Range: [0.0600ms, 0.1219ms] Ops/s: 151.95k Ops/s/t: 9.50k
  44. 32 threads: Avg: 0.4552ms Range: [0.4487ms, 0.4647ms] Ops/s: 70.30k Ops/s/t: 2.20k
  45. Operations per second per thread (weighted average): 140.35k
  46.  
  47. > SimpleLockFreeQueue
  48. 2 threads: Avg: 1.1810us Range: [1.1725us, 1.1853us] Ops/s: 1.69M Ops/s/t: 846.72k
  49. 3 threads: Avg: 1.9826us Range: [1.9242us, 2.0053us] Ops/s: 1.51M Ops/s/t: 504.38k
  50. 4 threads: Avg: 3.6579us Range: [3.6334us, 3.6857us] Ops/s: 1.09M Ops/s/t: 273.38k
  51. 8 threads: Avg: 0.0194ms Range: [0.0189ms, 0.0197ms] Ops/s: 413.40k Ops/s/t: 51.68k
  52. 12 threads: Avg: 0.0655ms Range: [0.0648ms, 0.0659ms] Ops/s: 183.33k Ops/s/t: 15.28k
  53. 16 threads: Avg: 0.1455ms Range: [0.1419ms, 0.1495ms] Ops/s: 110.00k Ops/s/t: 6.88k
  54. 32 threads: Avg: 0.6181ms Range: [0.6038ms, 0.6343ms] Ops/s: 51.78k Ops/s/t: 1.62k
  55. Operations per second per thread (weighted average): 135.27k
  56.  
  57. > LockBasedQueue
  58. 2 threads: Avg: 1.8504us Range: [1.7820us, 1.9172us] Ops/s: 1.08M Ops/s/t: 540.42k
  59. 3 threads: Avg: 3.9396us Range: [3.8182us, 4.0805us] Ops/s: 761.50k Ops/s/t: 253.83k
  60. 4 threads: Avg: 9.6751us Range: [9.3798us, 9.8473us] Ops/s: 413.43k Ops/s/t: 103.36k
  61. 8 threads: Avg: 0.0462ms Range: [0.0448ms, 0.0475ms] Ops/s: 173.00k Ops/s/t: 21.62k
  62. 12 threads: Avg: 0.1076ms Range: [0.1060ms, 0.1089ms] Ops/s: 111.48k Ops/s/t: 9.29k
  63. 16 threads: Avg: 0.1980ms Range: [0.1891ms, 0.2031ms] Ops/s: 80.82k Ops/s/t: 5.05k
  64. 32 threads: Avg: 0.9612ms Range: [0.8963ms, 0.9933ms] Ops/s: 33.29k Ops/s/t: 1.04k
  65. Operations per second per thread (weighted average): 72.53k
  66.  
  67. > std::queue
  68. (skipping, benchmark not supported...)
  69.  
  70. only enqueue:
  71. (Measures the average operation speed when all threads are producers)
  72. > moodycamel::ConcurrentQueue
  73. Without tokens
  74. 1 thread: Avg: 0.0135us Range: [0.0134us, 0.0135us] Ops/s: 74.34M Ops/s/t: 74.34M
  75. 2 threads: Avg: 0.0247us Range: [0.0246us, 0.0247us] Ops/s: 81.14M Ops/s/t: 40.57M
  76. 4 threads: Avg: 0.0491us Range: [0.0484us, 0.0499us] Ops/s: 81.53M Ops/s/t: 20.38M
  77. 8 threads: Avg: 0.0972us Range: [0.0970us, 0.0975us] Ops/s: 82.34M Ops/s/t: 10.29M
  78. 32 threads: Avg: 0.6991us Range: [0.6824us, 0.7208us] Ops/s: 45.77M Ops/s/t: 1.43M
  79. Operations per second per thread (weighted average): 16.25M
  80.  
  81. With tokens
  82. 1 thread: Avg: 9.2814ns Range: [9.2435ns, 9.3282ns] Ops/s: 107.74M Ops/s/t: 107.74M
  83. 2 threads: Avg: 0.0201us Range: [0.0200us, 0.0202us] Ops/s: 99.73M Ops/s/t: 49.87M
  84. 4 threads: Avg: 0.0397us Range: [0.0395us, 0.0399us] Ops/s: 100.88M Ops/s/t: 25.22M
  85. 8 threads: Avg: 0.0801us Range: [0.0796us, 0.0804us] Ops/s: 99.88M Ops/s/t: 12.49M
  86. 32 threads: Avg: 0.4861us Range: [0.4833us, 0.4888us] Ops/s: 65.83M Ops/s/t: 2.06M
  87. Operations per second per thread (weighted average): 21.37M
  88.  
  89. > boost::lockfree::queue
  90. 1 thread: Avg: 0.0524us Range: [0.0524us, 0.0524us] Ops/s: 19.09M Ops/s/t: 19.09M
  91. 2 threads: Avg: 1.2931us Range: [1.2874us, 1.2971us] Ops/s: 1.55M Ops/s/t: 773.33k
  92. 4 threads: Avg: 7.3424us Range: [6.1107us, 7.6941us] Ops/s: 544.78k Ops/s/t: 136.20k
  93. 8 threads: Avg: 0.0401ms Range: [0.0319ms, 0.0425ms] Ops/s: 199.58k Ops/s/t: 24.95k
  94. 32 threads: Avg: 0.6946ms Range: [0.6833ms, 0.6998ms] Ops/s: 46.07k Ops/s/t: 1.44k
  95. Operations per second per thread (weighted average): 1.59M
  96.  
  97. > SimpleLockFreeQueue
  98. 1 thread: Avg: 0.0458us Range: [0.0457us, 0.0458us] Ops/s: 21.86M Ops/s/t: 21.86M
  99. 2 threads: Avg: 1.1061us Range: [1.0967us, 1.1101us] Ops/s: 1.81M Ops/s/t: 904.07k
  100. 4 threads: Avg: 4.6285us Range: [4.6207us, 4.6391us] Ops/s: 864.22k Ops/s/t: 216.05k
  101. 8 threads: Avg: 0.0174ms Range: [0.0173ms, 0.0175ms] Ops/s: 459.97k Ops/s/t: 57.50k
  102. 32 threads: Avg: 0.1523ms Range: [0.1515ms, 0.1529ms] Ops/s: 210.11k Ops/s/t: 6.57k
  103. Operations per second per thread (weighted average): 1.84M
  104.  
  105. > LockBasedQueue
  106. 1 thread: Avg: 0.0544us Range: [0.0543us, 0.0544us] Ops/s: 18.40M Ops/s/t: 18.40M
  107. 2 threads: Avg: 0.4327us Range: [0.4273us, 0.4360us] Ops/s: 4.62M Ops/s/t: 2.31M
  108. 4 threads: Avg: 7.1693us Range: [6.9000us, 7.3192us] Ops/s: 557.93k Ops/s/t: 139.48k
  109. 8 threads: Avg: 0.0226ms Range: [0.0219ms, 0.0229ms] Ops/s: 354.52k Ops/s/t: 44.32k
  110. 32 threads: Avg: 0.2876ms Range: [0.2779ms, 0.2958ms] Ops/s: 111.27k Ops/s/t: 3.48k
  111. Operations per second per thread (weighted average): 1.71M
  112.  
  113. > std::queue
  114. 1 thread: Avg: 3.6895ns Range: [3.6870ns, 3.6914ns] Ops/s: 271.04M Ops/s/t: 271.04M
  115. Operations per second per thread (weighted average): 271.04M
  116.  
  117. only enqueue (pre-allocated):
  118. (Measures the average operation speed when all threads are producers,
  119. and the queue has been stretched out first)
  120. > moodycamel::ConcurrentQueue
  121. Without tokens
  122. 1 thread: Avg: 0.0125us Range: [0.0125us, 0.0125us] Ops/s: 80.02M Ops/s/t: 80.02M
  123. 2 threads: Avg: 0.0359us Range: [0.0359us, 0.0360us] Ops/s: 55.66M Ops/s/t: 27.83M
  124. 4 threads: Avg: 0.1369us Range: [0.1363us, 0.1375us] Ops/s: 29.21M Ops/s/t: 7.30M
  125. 8 threads: Avg: 0.5476us Range: [0.5375us, 0.5523us] Ops/s: 14.61M Ops/s/t: 1.83M
  126. 32 threads: Avg: 0.0171ms Range: [0.0169ms, 0.0172ms] Ops/s: 1.87M Ops/s/t: 58.53k
  127. Operations per second per thread (weighted average): 10.81M
  128.  
  129. With tokens
  130. 1 thread: Avg: 7.4867ns Range: [7.4709ns, 7.5035ns] Ops/s: 133.57M Ops/s/t: 133.57M
  131. 2 threads: Avg: 0.0159us Range: [0.0158us, 0.0161us] Ops/s: 125.42M Ops/s/t: 62.71M
  132. 4 threads: Avg: 0.0314us Range: [0.0313us, 0.0316us] Ops/s: 127.25M Ops/s/t: 31.81M
  133. 8 threads: Avg: 0.0638us Range: [0.0635us, 0.0642us] Ops/s: 125.46M Ops/s/t: 15.68M
  134. 32 threads: Avg: 0.3848us Range: [0.3779us, 0.3878us] Ops/s: 83.16M Ops/s/t: 2.60M
  135. Operations per second per thread (weighted average): 26.74M
  136.  
  137. > boost::lockfree::queue
  138. 1 thread: Avg: 0.0336us Range: [0.0334us, 0.0337us] Ops/s: 29.76M Ops/s/t: 29.76M
  139. 2 threads: Avg: 1.4450us Range: [1.1839us, 1.5761us] Ops/s: 1.38M Ops/s/t: 692.03k
  140. 4 threads: Avg: 8.6435us Range: [8.5695us, 8.6942us] Ops/s: 462.77k Ops/s/t: 115.69k
  141. 8 threads: Avg: 0.0491ms Range: [0.0483ms, 0.0499ms] Ops/s: 163.04k Ops/s/t: 20.38k
  142. 32 threads: Avg: 0.5627ms Range: [0.5548ms, 0.5681ms] Ops/s: 56.87k Ops/s/t: 1.78k
  143. Operations per second per thread (weighted average): 2.41M
  144.  
  145. > SimpleLockFreeQueue
  146. 1 thread: Avg: 0.0457us Range: [0.0457us, 0.0457us] Ops/s: 21.89M Ops/s/t: 21.89M
  147. 2 threads: Avg: 1.1844us Range: [1.1792us, 1.1869us] Ops/s: 1.69M Ops/s/t: 844.33k
  148. 4 threads: Avg: 4.8006us Range: [3.4845us, 5.1406us] Ops/s: 833.24k Ops/s/t: 208.31k
  149. 8 threads: Avg: 0.0202ms Range: [0.0201ms, 0.0202ms] Ops/s: 396.94k Ops/s/t: 49.62k
  150. 32 threads: Avg: 0.2578ms Range: [0.2575ms, 0.2580ms] Ops/s: 124.13k Ops/s/t: 3.88k
  151. Operations per second per thread (weighted average): 1.83M
  152.  
  153. > LockBasedQueue
  154. 1 thread: Avg: 0.0549us Range: [0.0549us, 0.0550us] Ops/s: 18.20M Ops/s/t: 18.20M
  155. 2 threads: Avg: 0.4395us Range: [0.4364us, 0.4421us] Ops/s: 4.55M Ops/s/t: 2.28M
  156. 4 threads: Avg: 7.0350us Range: [6.8198us, 7.2042us] Ops/s: 568.59k Ops/s/t: 142.15k
  157. 8 threads: Avg: 0.0234ms Range: [0.0229ms, 0.0238ms] Ops/s: 341.78k Ops/s/t: 42.72k
  158. 32 threads: Avg: 0.2932ms Range: [0.2815ms, 0.2988ms] Ops/s: 109.16k Ops/s/t: 3.41k
  159. Operations per second per thread (weighted average): 1.69M
  160.  
  161. > std::queue
  162. 1 thread: Avg: 4.6422ns Range: [4.6371ns, 4.6463ns] Ops/s: 215.41M Ops/s/t: 215.41M
  163. Operations per second per thread (weighted average): 215.41M
  164.  
  165. only enqueue bulk:
  166. (Measures the average speed of enqueueing an item in bulk when all threads are producers)
  167. > moodycamel::ConcurrentQueue
  168. Without tokens
  169. 1 thread: Avg: 3.8374ns Range: [3.8266ns, 3.8411ns] Ops/s: 260.59M Ops/s/t: 260.59M
  170. 2 threads: Avg: 8.4786ns Range: [8.4572ns, 8.4953ns] Ops/s: 235.89M Ops/s/t: 117.94M
  171. 4 threads: Avg: 0.0175us Range: [0.0174us, 0.0176us] Ops/s: 229.05M Ops/s/t: 57.26M
  172. 8 threads: Avg: 0.0343us Range: [0.0341us, 0.0345us] Ops/s: 233.44M Ops/s/t: 29.18M
  173. 32 threads: Avg: 0.3014us Range: [0.2866us, 0.3146us] Ops/s: 106.18M Ops/s/t: 3.32M
  174. Operations per second per thread (weighted average): 49.86M
  175.  
  176. With tokens
  177. 1 thread: Avg: 3.7481ns Range: [3.7437ns, 3.7520ns] Ops/s: 266.80M Ops/s/t: 266.80M
  178. 2 threads: Avg: 8.5005ns Range: [8.4872ns, 8.5106ns] Ops/s: 235.28M Ops/s/t: 117.64M
  179. 4 threads: Avg: 0.0179us Range: [0.0178us, 0.0179us] Ops/s: 224.03M Ops/s/t: 56.01M
  180. 8 threads: Avg: 0.0385us Range: [0.0383us, 0.0387us] Ops/s: 207.83M Ops/s/t: 25.98M
  181. 32 threads: Avg: 0.3718us Range: [0.3157us, 0.3868us] Ops/s: 86.06M Ops/s/t: 2.69M
  182. Operations per second per thread (weighted average): 49.14M
  183.  
  184. > boost::lockfree::queue
  185. (skipping, benchmark not supported...)
  186.  
  187. > SimpleLockFreeQueue
  188. (skipping, benchmark not supported...)
  189.  
  190. > LockBasedQueue
  191. (skipping, benchmark not supported...)
  192.  
  193. > std::queue
  194. (skipping, benchmark not supported...)
  195.  
  196. only enqueue bulk (pre-allocated):
  197. (Measures the average speed of enqueueing an item in bulk when all threads are producers,
  198. and the queue has been stretched out first)
  199. > moodycamel::ConcurrentQueue
  200. Without tokens
  201. 1 thread: Avg: 3.8546ns Range: [3.8525ns, 3.8560ns] Ops/s: 259.43M Ops/s/t: 259.43M
  202. 2 threads: Avg: 8.9874ns Range: [8.6774ns, 9.2670ns] Ops/s: 222.53M Ops/s/t: 111.27M
  203. 4 threads: Avg: 0.0186us Range: [0.0184us, 0.0187us] Ops/s: 215.38M Ops/s/t: 53.85M
  204. 8 threads: Avg: 0.0402us Range: [0.0399us, 0.0405us] Ops/s: 199.22M Ops/s/t: 24.90M
  205. 32 threads: Avg: 0.4145us Range: [0.4102us, 0.4208us] Ops/s: 77.20M Ops/s/t: 2.41M
  206. Operations per second per thread (weighted average): 47.18M
  207.  
  208. With tokens
  209. 1 thread: Avg: 3.7540ns Range: [3.7495ns, 3.7598ns] Ops/s: 266.38M Ops/s/t: 266.38M
  210. 2 threads: Avg: 8.7038ns Range: [8.5970ns, 8.9752ns] Ops/s: 229.79M Ops/s/t: 114.89M
  211. 4 threads: Avg: 0.0181us Range: [0.0179us, 0.0182us] Ops/s: 220.67M Ops/s/t: 55.17M
  212. 8 threads: Avg: 0.0390us Range: [0.0387us, 0.0393us] Ops/s: 205.06M Ops/s/t: 25.63M
  213. 32 threads: Avg: 0.3836us Range: [0.3732us, 0.3872us] Ops/s: 83.43M Ops/s/t: 2.61M
  214. Operations per second per thread (weighted average): 48.56M
  215.  
  216. > boost::lockfree::queue
  217. (skipping, benchmark not supported...)
  218.  
  219. > SimpleLockFreeQueue
  220. (skipping, benchmark not supported...)
  221.  
  222. > LockBasedQueue
  223. (skipping, benchmark not supported...)
  224.  
  225. > std::queue
  226. (skipping, benchmark not supported...)
  227.  
  228. only dequeue:
  229. (Measures the average operation speed when all threads are consumers)
  230. > moodycamel::ConcurrentQueue
  231. Without tokens
  232. 1 thread: Avg: 0.0354us Range: [0.0353us, 0.0355us] Ops/s: 28.22M Ops/s/t: 28.22M
  233. 2 threads: Avg: 0.7492us Range: [0.7468us, 0.7524us] Ops/s: 2.67M Ops/s/t: 1.33M
  234. 4 threads: Avg: 2.7223us Range: [2.6985us, 2.7482us] Ops/s: 1.47M Ops/s/t: 367.33k
  235. 8 threads: Avg: 9.4388us Range: [9.2227us, 9.6074us] Ops/s: 847.56k Ops/s/t: 105.95k
  236. 32 threads: Avg: 0.0874ms Range: [0.0865ms, 0.0885ms] Ops/s: 366.00k Ops/s/t: 11.44k
  237. Operations per second per thread (weighted average): 2.42M
  238.  
  239. With tokens
  240. 1 thread: Avg: 0.0317us Range: [0.0316us, 0.0317us] Ops/s: 31.60M Ops/s/t: 31.60M
  241. 2 threads: Avg: 0.0707us Range: [0.0706us, 0.0707us] Ops/s: 28.31M Ops/s/t: 14.15M
  242. 4 threads: Avg: 0.1446us Range: [0.1433us, 0.1461us] Ops/s: 27.67M Ops/s/t: 6.92M
  243. 8 threads: Avg: 0.3049us Range: [0.3013us, 0.3075us] Ops/s: 26.24M Ops/s/t: 3.28M
  244. 32 threads: Avg: 0.0107ms Range: [9.3196us, 0.0115ms] Ops/s: 2.98M Ops/s/t: 93.06k
  245. Operations per second per thread (weighted average): 5.83M
  246.  
  247. > boost::lockfree::queue
  248. 1 thread: Avg: 0.0294us Range: [0.0293us, 0.0295us] Ops/s: 34.02M Ops/s/t: 34.02M
  249. 2 threads: Avg: 1.2895us Range: [1.2843us, 1.2927us] Ops/s: 1.55M Ops/s/t: 775.52k
  250. 4 threads: Avg: 5.0618us Range: [5.0439us, 5.0729us] Ops/s: 790.24k Ops/s/t: 197.56k
  251. 8 threads: Avg: 0.0207ms Range: [0.0206ms, 0.0207ms] Ops/s: 386.62k Ops/s/t: 48.33k
  252. 32 threads: Avg: 0.3266ms Range: [0.3249ms, 0.3273ms] Ops/s: 97.99k Ops/s/t: 3.06k
  253. Operations per second per thread (weighted average): 2.77M
  254.  
  255. > SimpleLockFreeQueue
  256. 1 thread: Avg: 0.0246us Range: [0.0245us, 0.0246us] Ops/s: 40.70M Ops/s/t: 40.70M
  257. 2 threads: Avg: 1.4351us Range: [1.4312us, 1.4396us] Ops/s: 1.39M Ops/s/t: 696.82k
  258. 4 threads: Avg: 0.0101ms Range: [0.0100ms, 0.0101ms] Ops/s: 396.38k Ops/s/t: 99.09k
  259. 8 threads: Avg: 0.0534ms Range: [0.0531ms, 0.0537ms] Ops/s: 149.75k Ops/s/t: 18.72k
  260. 32 threads: Avg: 0.8992ms Range: [0.8895ms, 0.9056ms] Ops/s: 35.59k Ops/s/t: 1.11k
  261. Operations per second per thread (weighted average): 3.25M
  262.  
  263. > LockBasedQueue
  264. 1 thread: Avg: 0.0471us Range: [0.0471us, 0.0471us] Ops/s: 21.22M Ops/s/t: 21.22M
  265. 2 threads: Avg: 0.4164us Range: [0.4069us, 0.4203us] Ops/s: 4.80M Ops/s/t: 2.40M
  266. 4 threads: Avg: 0.0101ms Range: [9.8774us, 0.0104ms] Ops/s: 396.16k Ops/s/t: 99.04k
  267. 8 threads: Avg: 0.0375ms Range: [0.0372ms, 0.0381ms] Ops/s: 213.12k Ops/s/t: 26.64k
  268. 32 threads: Avg: 0.4838ms Range: [0.4727ms, 0.4920ms] Ops/s: 66.14k Ops/s/t: 2.07k
  269. Operations per second per thread (weighted average): 1.93M
  270.  
  271. > std::queue
  272. 1 thread: Avg: 3.3497ns Range: [3.3484ns, 3.3509ns] Ops/s: 298.53M Ops/s/t: 298.53M
  273. Operations per second per thread (weighted average): 298.53M
  274.  
  275. only dequeue bulk:
  276. (Measures the average speed of dequeueing an item in bulk when all threads are consumers)
  277. > moodycamel::ConcurrentQueue
  278. Without tokens
  279. 1 thread: Avg: 1.2840ns Range: [1.2806ns, 1.2867ns] Ops/s: 778.80M Ops/s/t: 778.80M
  280. 2 threads: Avg: 9.4111ns Range: [9.3789ns, 9.4458ns] Ops/s: 212.51M Ops/s/t: 106.26M
  281. 4 threads: Avg: 0.0410us Range: [0.0408us, 0.0412us] Ops/s: 97.45M Ops/s/t: 24.36M
  282. 8 threads: Avg: 0.1620us Range: [0.1613us, 0.1624us] Ops/s: 49.38M Ops/s/t: 6.17M
  283. 32 threads: Avg: 2.4876us Range: [2.4797us, 2.4945us] Ops/s: 12.86M Ops/s/t: 402.00k
  284. Operations per second per thread (weighted average): 77.33M
  285.  
  286. With tokens
  287. 1 thread: Avg: 1.0747ns Range: [1.0698ns, 1.0762ns] Ops/s: 930.51M Ops/s/t: 930.51M
  288. 2 threads: Avg: 2.4705ns Range: [2.4615ns, 2.4751ns] Ops/s: 809.56M Ops/s/t: 404.78M
  289. 4 threads: Avg: 5.8198ns Range: [5.6016ns, 5.9633ns] Ops/s: 687.31M Ops/s/t: 171.83M
  290. 8 threads: Avg: 0.0110us Range: [0.0109us, 0.0111us] Ops/s: 725.32M Ops/s/t: 90.67M
  291. 32 threads: Avg: 0.1218us Range: [0.1212us, 0.1227us] Ops/s: 262.78M Ops/s/t: 8.21M
  292. Operations per second per thread (weighted average): 166.63M
  293.  
  294. > boost::lockfree::queue
  295. (skipping, benchmark not supported...)
  296.  
  297. > SimpleLockFreeQueue
  298. (skipping, benchmark not supported...)
  299.  
  300. > LockBasedQueue
  301. (skipping, benchmark not supported...)
  302.  
  303. > std::queue
  304. (skipping, benchmark not supported...)
  305.  
  306. mostly enqueue:
  307. (Measures the average operation speed when most threads are enqueueing)
  308. > moodycamel::ConcurrentQueue
  309. Without tokens
  310. 2 threads: Avg: 0.1162us Range: [0.1157us, 0.1165us] Ops/s: 17.21M Ops/s/t: 8.60M
  311. 4 threads: Avg: 0.1640us Range: [0.1618us, 0.1672us] Ops/s: 24.39M Ops/s/t: 6.10M
  312. 8 threads: Avg: 0.7167us Range: [0.6679us, 0.7641us] Ops/s: 11.16M Ops/s/t: 1.40M
  313. 32 threads: Avg: 0.0105ms Range: [0.0104ms, 0.0106ms] Ops/s: 3.05M Ops/s/t: 95.20k
  314. Operations per second per thread (weighted average): 2.42M
  315.  
  316. With tokens
  317. 2 threads: Avg: 0.1502us Range: [0.1495us, 0.1506us] Ops/s: 13.32M Ops/s/t: 6.66M
  318. 4 threads: Avg: 0.0866us Range: [0.0863us, 0.0871us] Ops/s: 46.21M Ops/s/t: 11.55M
  319. 8 threads: Avg: 0.4570us Range: [0.1711us, 0.5777us] Ops/s: 17.51M Ops/s/t: 2.19M
  320. 32 threads: Avg: 6.4731us Range: [2.6813us, 0.0119ms] Ops/s: 4.94M Ops/s/t: 154.48k
  321. Operations per second per thread (weighted average): 3.33M
  322.  
  323. > boost::lockfree::queue
  324. 2 threads: Avg: 0.1087us Range: [0.1027us, 0.1128us] Ops/s: 18.40M Ops/s/t: 9.20M
  325. 4 threads: Avg: 4.4906us Range: [4.4457us, 4.5548us] Ops/s: 890.76k Ops/s/t: 222.69k
  326. 8 threads: Avg: 0.0264ms Range: [0.0263ms, 0.0266ms] Ops/s: 302.83k Ops/s/t: 37.85k
  327. 32 threads: Avg: 0.4813ms Range: [0.4753ms, 0.4900ms] Ops/s: 66.49k Ops/s/t: 2.08k
  328. Operations per second per thread (weighted average): 1.14M
  329.  
  330. > SimpleLockFreeQueue
  331. 2 threads: Avg: 0.4796us Range: [0.3359us, 0.5374us] Ops/s: 4.17M Ops/s/t: 2.09M
  332. 4 threads: Avg: 4.6122us Range: [4.5971us, 4.6278us] Ops/s: 867.26k Ops/s/t: 216.81k
  333. 8 threads: Avg: 0.0176ms Range: [0.0174ms, 0.0179ms] Ops/s: 453.56k Ops/s/t: 56.70k
  334. 32 threads: Avg: 0.2416ms Range: [0.2406ms, 0.2421ms] Ops/s: 132.48k Ops/s/t: 4.14k
  335. Operations per second per thread (weighted average): 299.69k
  336.  
  337. > LockBasedQueue
  338. 2 threads: Avg: 0.2316us Range: [0.2290us, 0.2341us] Ops/s: 8.64M Ops/s/t: 4.32M
  339. 4 threads: Avg: 7.3192us Range: [6.6544us, 7.8236us] Ops/s: 546.50k Ops/s/t: 136.63k
  340. 8 threads: Avg: 0.0329ms Range: [0.0318ms, 0.0347ms] Ops/s: 242.99k Ops/s/t: 30.37k
  341. 32 threads: Avg: 0.3866ms Range: [0.3185ms, 0.4130ms] Ops/s: 82.77k Ops/s/t: 2.59k
  342. Operations per second per thread (weighted average): 544.65k
  343.  
  344. > std::queue
  345. (skipping, benchmark not supported...)
  346.  
  347. mostly enqueue bulk:
  348. (Measures the average speed of enqueueing an item in bulk under light contention)
  349. > moodycamel::ConcurrentQueue
  350. Without tokens
  351. 2 threads: Avg: 8.0605ns Range: [8.0516ns, 8.0732ns] Ops/s: 248.12M Ops/s/t: 124.06M
  352. 4 threads: Avg: 0.0178us Range: [0.0176us, 0.0180us] Ops/s: 224.48M Ops/s/t: 56.12M
  353. 8 threads: Avg: 0.0394us Range: [0.0366us, 0.0418us] Ops/s: 203.09M Ops/s/t: 25.39M
  354. 32 threads: Avg: 0.2697us Range: [0.2579us, 0.2966us] Ops/s: 118.66M Ops/s/t: 3.71M
  355. Operations per second per thread (weighted average): 31.97M
  356.  
  357. With tokens
  358. 2 threads: Avg: 8.3222ns Range: [8.2949ns, 8.3455ns] Ops/s: 240.32M Ops/s/t: 120.16M
  359. 4 threads: Avg: 0.0172us Range: [0.0158us, 0.0180us] Ops/s: 232.72M Ops/s/t: 58.18M
  360. 8 threads: Avg: 0.0370us Range: [0.0369us, 0.0371us] Ops/s: 215.96M Ops/s/t: 27.00M
  361. 32 threads: Avg: 0.3011us Range: [0.2991us, 0.3035us] Ops/s: 106.29M Ops/s/t: 3.32M
  362. Operations per second per thread (weighted average): 32.05M
  363.  
  364. > boost::lockfree::queue
  365. (skipping, benchmark not supported...)
  366.  
  367. > SimpleLockFreeQueue
  368. (skipping, benchmark not supported...)
  369.  
  370. > LockBasedQueue
  371. (skipping, benchmark not supported...)
  372.  
  373. > std::queue
  374. (skipping, benchmark not supported...)
  375.  
  376. mostly dequeue:
  377. (Measures the average operation speed when most threads are dequeueing)
  378. > moodycamel::ConcurrentQueue
  379. Without tokens
  380. 2 threads: Avg: 0.1311us Range: [0.1278us, 0.1356us] Ops/s: 15.25M Ops/s/t: 7.63M
  381. 4 threads: Avg: 1.7159us Range: [1.7125us, 1.7215us] Ops/s: 2.33M Ops/s/t: 582.80k
  382. 8 threads: Avg: 5.0742us Range: [4.9893us, 5.1404us] Ops/s: 1.58M Ops/s/t: 197.07k
  383. Operations per second per thread (weighted average): 2.00M
  384.  
  385. With tokens
  386. 2 threads: Avg: 0.1510us Range: [0.1503us, 0.1525us] Ops/s: 13.24M Ops/s/t: 6.62M
  387. 4 threads: Avg: 1.4700us Range: [1.4130us, 1.4857us] Ops/s: 2.72M Ops/s/t: 680.28k
  388. 8 threads: Avg: 1.8810us Range: [1.3824us, 2.5874us] Ops/s: 4.25M Ops/s/t: 531.63k
  389. Operations per second per thread (weighted average): 1.96M
  390.  
  391. > boost::lockfree::queue
  392. 2 threads: Avg: 0.8132us Range: [0.7350us, 0.8655us] Ops/s: 2.46M Ops/s/t: 1.23M
  393. 4 threads: Avg: 2.3574us Range: [2.3413us, 2.3657us] Ops/s: 1.70M Ops/s/t: 424.20k
  394. 8 threads: Avg: 0.0110ms Range: [0.0110ms, 0.0111ms] Ops/s: 724.76k Ops/s/t: 90.60k
  395. Operations per second per thread (weighted average): 455.54k
  396.  
  397. > SimpleLockFreeQueue
  398. 2 threads: Avg: 0.8551us Range: [0.8225us, 0.8705us] Ops/s: 2.34M Ops/s/t: 1.17M
  399. 4 threads: Avg: 4.7072us Range: [4.5622us, 4.7671us] Ops/s: 849.76k Ops/s/t: 212.44k
  400. 8 threads: Avg: 0.0271ms Range: [0.0261ms, 0.0275ms] Ops/s: 295.05k Ops/s/t: 36.88k
  401. Operations per second per thread (weighted average): 349.72k
  402.  
  403. > LockBasedQueue
  404. 2 threads: Avg: 0.3509us Range: [0.1678us, 0.4276us] Ops/s: 5.70M Ops/s/t: 2.85M
  405. 4 threads: Avg: 8.6771us Range: [8.2011us, 9.1746us] Ops/s: 460.98k Ops/s/t: 115.25k
  406. 8 threads: Avg: 0.0240ms Range: [0.0233ms, 0.0246ms] Ops/s: 333.25k Ops/s/t: 41.66k
  407. Operations per second per thread (weighted average): 701.36k
  408.  
  409. > std::queue
  410. (skipping, benchmark not supported...)
  411.  
  412. mostly dequeue bulk:
  413. (Measures the average speed of dequeueing an item in bulk under light contention)
  414. > moodycamel::ConcurrentQueue
  415. Without tokens
  416. 2 threads: Avg: 9.8789ns Range: [9.4461ns, 0.0100us] Ops/s: 202.45M Ops/s/t: 101.23M
  417. 4 threads: Avg: 0.0319us Range: [0.0318us, 0.0320us] Ops/s: 125.36M Ops/s/t: 31.34M
  418. 8 threads: Avg: 0.1666us Range: [0.1658us, 0.1679us] Ops/s: 48.03M Ops/s/t: 6.00M
  419. Operations per second per thread (weighted average): 35.69M
  420.  
  421. With tokens
  422. 2 threads: Avg: 3.1924ns Range: [3.1797ns, 3.2033ns] Ops/s: 626.49M Ops/s/t: 313.25M
  423. 4 threads: Avg: 6.6697ns Range: [6.6164ns, 6.7504ns] Ops/s: 599.73M Ops/s/t: 149.93M
  424. 8 threads: Avg: 0.0154us Range: [0.0150us, 0.0156us] Ops/s: 519.76M Ops/s/t: 64.97M
  425. Operations per second per thread (weighted average): 148.43M
  426.  
  427. > boost::lockfree::queue
  428. (skipping, benchmark not supported...)
  429.  
  430. > SimpleLockFreeQueue
  431. (skipping, benchmark not supported...)
  432.  
  433. > LockBasedQueue
  434. (skipping, benchmark not supported...)
  435.  
  436. > std::queue
  437. (skipping, benchmark not supported...)
  438.  
  439. single-producer, multi-consumer (measuring all but 1 thread):
  440. (Measures the average speed of dequeueing with only one producer, but multiple consumers)
  441. > moodycamel::ConcurrentQueue
  442. Without tokens
  443. 2 threads: Avg: 0.2256us Range: [0.2245us, 0.2264us] Ops/s: 4.43M Ops/s/t: 4.43M
  444. 4 threads: Avg: 3.4318us Range: [3.2495us, 3.7797us] Ops/s: 874.17k Ops/s/t: 291.39k
  445. 8 threads: Avg: 5.6953us Range: [5.2493us, 6.7433us] Ops/s: 1.23M Ops/s/t: 175.58k
  446. 16 threads: Avg: 0.0113ms Range: [0.0100ms, 0.0131ms] Ops/s: 1.33M Ops/s/t: 88.85k
  447. Operations per second per thread (weighted average): 621.17k
  448.  
  449. With tokens
  450. 2 threads: Avg: 0.1899us Range: [0.1876us, 0.1919us] Ops/s: 5.27M Ops/s/t: 5.27M
  451. 4 threads: Avg: 3.6025us Range: [3.3529us, 3.9702us] Ops/s: 832.76k Ops/s/t: 277.59k
  452. 8 threads: Avg: 7.4073us Range: [7.3407us, 7.5404us] Ops/s: 945.02k Ops/s/t: 135.00k
  453. 16 threads: Avg: 0.0145ms Range: [0.0105ms, 0.0170ms] Ops/s: 1.03M Ops/s/t: 68.74k
  454. Operations per second per thread (weighted average): 688.60k
  455.  
  456. > boost::lockfree::queue
  457. 2 threads: Avg: 0.1334us Range: [0.1161us, 0.1753us] Ops/s: 7.49M Ops/s/t: 7.49M
  458. 4 threads: Avg: 0.2326us Range: [0.2230us, 0.2513us] Ops/s: 12.90M Ops/s/t: 4.30M
  459. 8 threads: Avg: 0.4849us Range: [0.4723us, 0.5000us] Ops/s: 14.44M Ops/s/t: 2.06M
  460. 16 threads: Avg: 1.0460us Range: [1.0260us, 1.0678us] Ops/s: 14.34M Ops/s/t: 955.98k
  461. Operations per second per thread (weighted average): 2.60M
  462.  
  463. > SimpleLockFreeQueue
  464. 2 threads: Avg: 0.6093us Range: [0.6054us, 0.6113us] Ops/s: 1.64M Ops/s/t: 1.64M
  465. 4 threads: Avg: 6.7782us Range: [6.7631us, 6.7924us] Ops/s: 442.60k Ops/s/t: 147.53k
  466. 8 threads: Avg: 0.0235ms Range: [0.0182ms, 0.0301ms] Ops/s: 298.41k Ops/s/t: 42.63k
  467. 16 threads: Avg: 0.0523ms Range: [0.0492ms, 0.0557ms] Ops/s: 287.00k Ops/s/t: 19.13k
  468. Operations per second per thread (weighted average): 225.24k
  469.  
  470. > LockBasedQueue
  471. 2 threads: Avg: 0.3584us Range: [0.3269us, 0.3872us] Ops/s: 2.79M Ops/s/t: 2.79M
  472. 4 threads: Avg: 3.7071us Range: [3.5573us, 3.9738us] Ops/s: 809.26k Ops/s/t: 269.75k
  473. 8 threads: Avg: 8.6680us Range: [8.6402us, 8.7191us] Ops/s: 807.57k Ops/s/t: 115.37k
  474. 16 threads: Avg: 0.0292ms Range: [0.0290ms, 0.0294ms] Ops/s: 513.34k Ops/s/t: 34.22k
  475. Operations per second per thread (weighted average): 399.41k
  476.  
  477. > std::queue
  478. (skipping, benchmark not supported...)
  479.  
  480. single-producer, multi-consumer (pre-produced):
  481. (Measures the average speed of dequeueing from a queue pre-filled by one thread)
  482. > moodycamel::ConcurrentQueue
  483. Without tokens
  484. 1 thread: Avg: 0.0355us Range: [0.0354us, 0.0356us] Ops/s: 28.13M Ops/s/t: 28.13M
  485. 3 threads: Avg: 1.0150us Range: [1.0132us, 1.0159us] Ops/s: 2.96M Ops/s/t: 985.22k
  486. 7 threads: Avg: 7.3523us Range: [7.2042us, 7.4180us] Ops/s: 952.09k Ops/s/t: 136.01k
  487. 15 threads: Avg: 0.0359ms Range: [0.0358ms, 0.0360ms] Ops/s: 417.69k Ops/s/t: 27.85k
  488. Operations per second per thread (weighted average): 3.28M
  489.  
  490. With tokens
  491. 1 thread: Avg: 0.0316us Range: [0.0316us, 0.0317us] Ops/s: 31.60M Ops/s/t: 31.60M
  492. 3 threads: Avg: 1.0374us Range: [1.0351us, 1.0412us] Ops/s: 2.89M Ops/s/t: 963.99k
  493. 7 threads: Avg: 7.4213us Range: [7.3824us, 7.4363us] Ops/s: 943.23k Ops/s/t: 134.75k
  494. 15 threads: Avg: 0.0360ms Range: [0.0358ms, 0.0361ms] Ops/s: 416.88k Ops/s/t: 27.79k
  495. Operations per second per thread (weighted average): 3.65M
  496.  
  497. > boost::lockfree::queue
  498. 1 thread: Avg: 0.0294us Range: [0.0293us, 0.0295us] Ops/s: 34.01M Ops/s/t: 34.01M
  499. 3 threads: Avg: 2.4851us Range: [2.4733us, 2.4919us] Ops/s: 1.21M Ops/s/t: 402.39k
  500. 7 threads: Avg: 0.0148ms Range: [0.0147ms, 0.0149ms] Ops/s: 471.83k Ops/s/t: 67.40k
  501. 15 threads: Avg: 0.0765ms Range: [0.0759ms, 0.0770ms] Ops/s: 195.98k Ops/s/t: 13.07k
  502. Operations per second per thread (weighted average): 3.78M
  503.  
  504. > SimpleLockFreeQueue
  505. 1 thread: Avg: 0.0247us Range: [0.0245us, 0.0248us] Ops/s: 40.47M Ops/s/t: 40.47M
  506. 3 threads: Avg: 3.2708us Range: [3.2477us, 3.2878us] Ops/s: 917.20k Ops/s/t: 305.73k
  507. 7 threads: Avg: 0.0355ms Range: [0.0350ms, 0.0357ms] Ops/s: 197.26k Ops/s/t: 28.18k
  508. 15 threads: Avg: 0.2644ms Range: [0.2617ms, 0.2665ms] Ops/s: 56.73k Ops/s/t: 3.78k
  509. Operations per second per thread (weighted average): 4.44M
  510.  
  511. > LockBasedQueue
  512. 1 thread: Avg: 0.0473us Range: [0.0472us, 0.0475us] Ops/s: 21.13M Ops/s/t: 21.13M
  513. 3 threads: Avg: 3.6570us Range: [3.4832us, 3.7815us] Ops/s: 820.33k Ops/s/t: 273.44k
  514. 7 threads: Avg: 0.0183ms Range: [0.0169ms, 0.0209ms] Ops/s: 383.30k Ops/s/t: 54.76k
  515. 15 threads: Avg: 0.0977ms Range: [0.0914ms, 0.1002ms] Ops/s: 153.54k Ops/s/t: 10.24k
  516. Operations per second per thread (weighted average): 2.36M
  517.  
  518. > std::queue
  519. (skipping, benchmark not supported...)
  520.  
  521. multi-producer, single-consumer (measuring 1 thread):
  522. (Measures the average speed of dequeueing with only one consumer, but multiple producers)
  523. > moodycamel::ConcurrentQueue
  524. Without tokens
  525. 2 threads: Avg: 0.0728us Range: [0.0727us, 0.0729us] Ops/s: 13.74M Ops/s/t: 13.74M
  526. 4 threads: Avg: 0.0510us Range: [0.0507us, 0.0512us] Ops/s: 19.61M Ops/s/t: 19.61M
  527. 8 threads: Avg: 0.0833us Range: [0.0826us, 0.0839us] Ops/s: 12.00M Ops/s/t: 12.00M
  528. 16 threads: Avg: 0.2114us Range: [0.2097us, 0.2129us] Ops/s: 4.73M Ops/s/t: 4.73M
  529. Operations per second per thread (weighted average): 12.52M
  530.  
  531. With tokens
  532. 2 threads: Avg: 0.0658us Range: [0.0656us, 0.0660us] Ops/s: 15.20M Ops/s/t: 15.20M
  533. 4 threads: Avg: 0.0367us Range: [0.0364us, 0.0370us] Ops/s: 27.26M Ops/s/t: 27.26M
  534. 8 threads: Avg: 0.0340us Range: [0.0340us, 0.0341us] Ops/s: 29.39M Ops/s/t: 29.39M
  535. 16 threads: Avg: 0.0338us Range: [0.0337us, 0.0339us] Ops/s: 29.59M Ops/s/t: 29.59M
  536. Operations per second per thread (weighted average): 25.36M
  537.  
  538. > boost::lockfree::queue
  539. 2 threads: Avg: 0.0429us Range: [0.0408us, 0.0447us] Ops/s: 23.33M Ops/s/t: 23.33M
  540. 4 threads: Avg: 0.6488us Range: [0.6370us, 0.6529us] Ops/s: 1.54M Ops/s/t: 1.54M
  541. 8 threads: Avg: 0.9254us Range: [0.9196us, 0.9302us] Ops/s: 1.08M Ops/s/t: 1.08M
  542. 16 threads: Avg: 1.1262us Range: [1.1000us, 1.1541us] Ops/s: 887.96k Ops/s/t: 887.96k
  543. Operations per second per thread (weighted average): 6.71M
  544.  
  545. > SimpleLockFreeQueue
  546. 2 threads: Avg: 0.4409us Range: [0.4356us, 0.4450us] Ops/s: 2.27M Ops/s/t: 2.27M
  547. 4 threads: Avg: 0.4296us Range: [0.4285us, 0.4311us] Ops/s: 2.33M Ops/s/t: 2.33M
  548. 8 threads: Avg: 0.3303us Range: [0.3005us, 0.3387us] Ops/s: 3.03M Ops/s/t: 3.03M
  549. 16 threads: Avg: 0.3170us Range: [0.3164us, 0.3178us] Ops/s: 3.15M Ops/s/t: 3.15M
  550. Operations per second per thread (weighted average): 2.69M
  551.  
  552. > LockBasedQueue
  553. 2 threads: Avg: 0.2293us Range: [0.1656us, 0.2887us] Ops/s: 4.36M Ops/s/t: 4.36M
  554. 4 threads: Avg: 0.6890us Range: [0.6386us, 0.7483us] Ops/s: 1.45M Ops/s/t: 1.45M
  555. 8 threads: Avg: 0.6091us Range: [0.5905us, 0.6252us] Ops/s: 1.64M Ops/s/t: 1.64M
  556. 16 threads: Avg: 0.4977us Range: [0.4912us, 0.5052us] Ops/s: 2.01M Ops/s/t: 2.01M
  557. Operations per second per thread (weighted average): 2.37M
  558.  
  559. > std::queue
  560. (skipping, benchmark not supported...)
  561.  
  562. dequeue from empty:
  563. (Measures the average speed of attempting to dequeue from an empty queue
  564. (that eight separate threads had at one point enqueued to))
  565. > moodycamel::ConcurrentQueue
  566. Without tokens
  567. 1 thread: Avg: 0.1533us Range: [0.0268us, 0.1953us] Ops/s: 6.52M Ops/s/t: 6.52M
  568. ^ Note: No contention -- measures raw failed dequeue speed on empty queue
  569. 2 threads: Avg: 0.2570us Range: [0.0958us, 0.3858us] Ops/s: 7.78M Ops/s/t: 3.89M
  570. 8 threads: Avg: 1.4926us Range: [1.2811us, 1.5480us] Ops/s: 5.36M Ops/s/t: 669.99k
  571. 32 threads: Avg: 0.0105ms Range: [7.9929us, 0.0115ms] Ops/s: 3.06M Ops/s/t: 95.54k
  572. Operations per second per thread (weighted average): 1.33M
  573.  
  574. With tokens
  575. 1 thread: Avg: 0.0564us Range: [0.0223us, 0.0682us] Ops/s: 17.72M Ops/s/t: 17.72M
  576. ^ Note: No contention -- measures raw failed dequeue speed on empty queue
  577. 2 threads: Avg: 0.1173us Range: [0.1158us, 0.1189us] Ops/s: 17.05M Ops/s/t: 8.53M
  578. 8 threads: Avg: 0.9135us Range: [0.4582us, 1.0500us] Ops/s: 8.76M Ops/s/t: 1.09M
  579. 32 threads: Avg: 8.0154us Range: [2.8338us, 9.9510us] Ops/s: 3.99M Ops/s/t: 124.76k
  580. Operations per second per thread (weighted average): 3.08M
  581.  
  582. > boost::lockfree::queue
  583. 1 thread: Avg: 3.7037ns Range: [3.7013ns, 3.7050ns] Ops/s: 270.00M Ops/s/t: 270.00M
  584. ^ Note: No contention -- measures raw failed dequeue speed on empty queue
  585. 2 threads: Avg: 8.0666ns Range: [8.0564ns, 8.0832ns] Ops/s: 247.94M Ops/s/t: 123.97M
  586. 8 threads: Avg: 0.0322us Range: [0.0322us, 0.0322us] Ops/s: 248.39M Ops/s/t: 31.05M
  587. 32 threads: Avg: 0.1946us Range: [0.1932us, 0.1975us] Ops/s: 164.45M Ops/s/t: 5.14M
  588. Operations per second per thread (weighted average): 51.58M
  589.  
  590. > SimpleLockFreeQueue
  591. 1 thread: Avg: 5.0452ns Range: [5.0382ns, 5.0507ns] Ops/s: 198.21M Ops/s/t: 198.21M
  592. ^ Note: No contention -- measures raw failed dequeue speed on empty queue
  593. 2 threads: Avg: 0.0105us Range: [0.0104us, 0.0105us] Ops/s: 190.87M Ops/s/t: 95.43M
  594. 8 threads: Avg: 0.0418us Range: [0.0417us, 0.0420us] Ops/s: 191.24M Ops/s/t: 23.90M
  595. 32 threads: Avg: 0.3016us Range: [0.3009us, 0.3025us] Ops/s: 106.12M Ops/s/t: 3.32M
  596. Operations per second per thread (weighted average): 38.49M
  597.  
  598. > LockBasedQueue
  599. 1 thread: Avg: 0.0250us Range: [0.0249us, 0.0250us] Ops/s: 40.01M Ops/s/t: 40.01M
  600. ^ Note: No contention -- measures raw failed dequeue speed on empty queue
  601. 2 threads: Avg: 0.1973us Range: [0.1928us, 0.2009us] Ops/s: 10.14M Ops/s/t: 5.07M
  602. 8 threads: Avg: 7.1925us Range: [7.1054us, 7.2650us] Ops/s: 1.11M Ops/s/t: 139.03k
  603. 32 threads: Avg: 0.0902ms Range: [0.0877ms, 0.0927ms] Ops/s: 354.76k Ops/s/t: 11.09k
  604. Operations per second per thread (weighted average): 4.37M
  605.  
  606. > std::queue
  607. 1 thread: Avg: 0.6726ns Range: [0.6724ns, 0.6728ns] Ops/s: 1.49G Ops/s/t: 1.49G
  608. ^ Note: No contention -- measures raw failed dequeue speed on empty queue
  609. Operations per second per thread (weighted average): 1.49G
  610.  
  611. enqueue-dequeue pairs:
  612. (Measures the average operation speed with each thread doing an enqueue
  613. followed by a dequeue)
  614. > moodycamel::ConcurrentQueue
  615. Without tokens
  616. 1 thread: Avg: 0.0209us Range: [0.0209us, 0.0211us] Ops/s: 47.81M Ops/s/t: 47.81M
  617. ^ Note: No contention -- measures speed of immediately dequeueing the item that was just enqueued
  618. 2 threads: Avg: 0.2992us Range: [0.1643us, 0.3385us] Ops/s: 6.68M Ops/s/t: 3.34M
  619. 4 threads: Avg: 1.5971us Range: [1.5668us, 1.6323us] Ops/s: 2.50M Ops/s/t: 626.15k
  620. 8 threads: Avg: 6.6631us Range: [6.3374us, 6.9573us] Ops/s: 1.20M Ops/s/t: 150.08k
  621. 32 threads: Avg: 0.0750ms Range: [0.0738ms, 0.0765ms] Ops/s: 426.46k Ops/s/t: 13.33k
  622. Operations per second per thread (weighted average): 4.21M
  623.  
  624. With tokens
  625. 1 thread: Avg: 0.0167us Range: [0.0167us, 0.0167us] Ops/s: 59.92M Ops/s/t: 59.92M
  626. ^ Note: No contention -- measures speed of immediately dequeueing the item that was just enqueued
  627. 2 threads: Avg: 0.0433us Range: [0.0426us, 0.0437us] Ops/s: 46.24M Ops/s/t: 23.12M
  628. 4 threads: Avg: 0.1144us Range: [0.1099us, 0.1168us] Ops/s: 34.98M Ops/s/t: 8.74M
  629. 8 threads: Avg: 0.3348us Range: [0.3110us, 0.3513us] Ops/s: 23.89M Ops/s/t: 2.99M
  630. 32 threads: Avg: 8.8864us Range: [8.6909us, 9.1329us] Ops/s: 3.60M Ops/s/t: 112.53k
  631. Operations per second per thread (weighted average): 9.24M
  632.  
  633. > boost::lockfree::queue
  634. 1 thread: Avg: 0.0334us Range: [0.0334us, 0.0334us] Ops/s: 29.94M Ops/s/t: 29.94M
  635. ^ Note: No contention -- measures speed of immediately dequeueing the item that was just enqueued
  636. 2 threads: Avg: 1.0739us Range: [1.0646us, 1.0871us] Ops/s: 1.86M Ops/s/t: 931.21k
  637. 4 threads: Avg: 4.9304us Range: [4.9195us, 4.9383us] Ops/s: 811.29k Ops/s/t: 202.82k
  638. 8 threads: Avg: 0.0234ms Range: [0.0233ms, 0.0235ms] Ops/s: 341.55k Ops/s/t: 42.69k
  639. 32 threads: Avg: 0.3942ms Range: [0.3895ms, 0.3993ms] Ops/s: 81.18k Ops/s/t: 2.54k
  640. Operations per second per thread (weighted average): 2.46M
  641.  
  642. > SimpleLockFreeQueue
  643. 1 thread: Avg: 0.0385us Range: [0.0385us, 0.0385us] Ops/s: 25.95M Ops/s/t: 25.95M
  644. ^ Note: No contention -- measures speed of immediately dequeueing the item that was just enqueued
  645. 2 threads: Avg: 0.9441us Range: [0.9370us, 0.9551us] Ops/s: 2.12M Ops/s/t: 1.06M
  646. 4 threads: Avg: 4.8343us Range: [3.7781us, 5.2675us] Ops/s: 827.41k Ops/s/t: 206.85k
  647. 8 threads: Avg: 0.0313ms Range: [0.0309ms, 0.0315ms] Ops/s: 255.59k Ops/s/t: 31.95k
  648. 32 threads: Avg: 0.6217ms Range: [0.5822ms, 0.6380ms] Ops/s: 51.47k Ops/s/t: 1.61k
  649. Operations per second per thread (weighted average): 2.17M
  650.  
  651. > LockBasedQueue
  652. 1 thread: Avg: 0.0520us Range: [0.0520us, 0.0520us] Ops/s: 19.23M Ops/s/t: 19.23M
  653. ^ Note: No contention -- measures speed of immediately dequeueing the item that was just enqueued
  654. 2 threads: Avg: 0.4032us Range: [0.3945us, 0.4099us] Ops/s: 4.96M Ops/s/t: 2.48M
  655. 4 threads: Avg: 6.9201us Range: [6.7457us, 6.9956us] Ops/s: 578.02k Ops/s/t: 144.51k
  656. 8 threads: Avg: 0.0348ms Range: [0.0340ms, 0.0353ms] Ops/s: 229.95k Ops/s/t: 28.74k
  657. 32 threads: Avg: 0.5090ms Range: [0.4900ms, 0.5330ms] Ops/s: 62.87k Ops/s/t: 1.96k
  658. Operations per second per thread (weighted average): 1.79M
  659.  
  660. > std::queue
  661. 1 thread: Avg: 2.7266ns Range: [2.7253ns, 2.7271ns] Ops/s: 366.76M Ops/s/t: 366.76M
  662. ^ Note: No contention -- measures speed of immediately dequeueing the item that was just enqueued
  663. Operations per second per thread (weighted average): 366.76M
  664.  
  665. heavy concurrent:
  666. (Measures the average operation speed with many threads under heavy load)
  667. > moodycamel::ConcurrentQueue
  668. Without tokens
  669. 2 threads: Avg: 0.3046us Range: [0.2968us, 0.3116us] Ops/s: 6.57M Ops/s/t: 3.28M
  670. 3 threads: Avg: 0.5399us Range: [0.5048us, 0.5707us] Ops/s: 5.56M Ops/s/t: 1.85M
  671. 4 threads: Avg: 0.9670us Range: [0.9609us, 0.9730us] Ops/s: 4.14M Ops/s/t: 1.03M
  672. 8 threads: Avg: 2.2217us Range: [2.2024us, 2.2410us] Ops/s: 3.60M Ops/s/t: 450.10k
  673. 16 threads: Avg: 6.3541us Range: [6.2198us, 6.4482us] Ops/s: 2.52M Ops/s/t: 157.38k
  674. 32 threads: Avg: 0.0338ms Range: [0.0329ms, 0.0341ms] Ops/s: 947.06k Ops/s/t: 29.60k
  675. Operations per second per thread (weighted average): 680.02k
  676.  
  677. With tokens
  678. 2 threads: Avg: 0.0434us Range: [0.0428us, 0.0444us] Ops/s: 46.04M Ops/s/t: 23.02M
  679. 3 threads: Avg: 0.1618us Range: [0.1545us, 0.1731us] Ops/s: 18.54M Ops/s/t: 6.18M
  680. 4 threads: Avg: 0.4171us Range: [0.3514us, 0.4466us] Ops/s: 9.59M Ops/s/t: 2.40M
  681. 8 threads: Avg: 1.0202us Range: [0.8877us, 1.1089us] Ops/s: 7.84M Ops/s/t: 980.23k
  682. 16 threads: Avg: 3.4776us Range: [2.7165us, 4.0696us] Ops/s: 4.60M Ops/s/t: 287.56k
  683. 32 threads: Avg: 0.0319ms Range: [0.0202ms, 0.0386ms] Ops/s: 1.00M Ops/s/t: 31.37k
  684. Operations per second per thread (weighted average): 2.96M
  685.  
  686. > boost::lockfree::queue
  687. 2 threads: Avg: 1.1867us Range: [1.1810us, 1.1911us] Ops/s: 1.69M Ops/s/t: 842.70k
  688. 3 threads: Avg: 2.2442us Range: [2.2213us, 2.2647us] Ops/s: 1.34M Ops/s/t: 445.59k
  689. 4 threads: Avg: 2.9144us Range: [2.8592us, 2.9486us] Ops/s: 1.37M Ops/s/t: 343.13k
  690. 8 threads: Avg: 8.1100us Range: [7.6439us, 8.3011us] Ops/s: 986.44k Ops/s/t: 123.30k
  691. 16 threads: Avg: 0.0341ms Range: [0.0330ms, 0.0349ms] Ops/s: 468.78k Ops/s/t: 29.30k
  692. 32 threads: Avg: 0.3451ms Range: [0.3256ms, 0.3603ms] Ops/s: 92.74k Ops/s/t: 2.90k
  693. Operations per second per thread (weighted average): 177.64k
  694.  
  695. > SimpleLockFreeQueue
  696. 2 threads: Avg: 0.8704us Range: [0.8156us, 0.9058us] Ops/s: 2.30M Ops/s/t: 1.15M
  697. 3 threads: Avg: 2.2284us Range: [2.2216us, 2.2328us] Ops/s: 1.35M Ops/s/t: 448.75k
  698. 4 threads: Avg: 4.5420us Range: [4.5235us, 4.5510us] Ops/s: 880.67k Ops/s/t: 220.17k
  699. 8 threads: Avg: 0.0199ms Range: [0.0198ms, 0.0200ms] Ops/s: 401.66k Ops/s/t: 50.21k
  700. 16 threads: Avg: 0.0833ms Range: [0.0826ms, 0.0839ms] Ops/s: 191.98k Ops/s/t: 12.00k
  701. 32 threads: Avg: 0.4502ms Range: [0.4109ms, 0.4624ms] Ops/s: 71.08k Ops/s/t: 2.22k
  702. Operations per second per thread (weighted average): 172.70k
  703.  
  704. > LockBasedQueue
  705. 2 threads: Avg: 0.4030us Range: [0.3929us, 0.4106us] Ops/s: 4.96M Ops/s/t: 2.48M
  706. 3 threads: Avg: 3.1890us Range: [2.1707us, 3.6277us] Ops/s: 940.74k Ops/s/t: 313.58k
  707. 4 threads: Avg: 9.7849us Range: [8.8413us, 0.0102ms] Ops/s: 408.79k Ops/s/t: 102.20k
  708. 8 threads: Avg: 0.0308ms Range: [0.0295ms, 0.0320ms] Ops/s: 259.89k Ops/s/t: 32.49k
  709. 16 threads: Avg: 0.1139ms Range: [0.1045ms, 0.1262ms] Ops/s: 140.44k Ops/s/t: 8.78k
  710. 32 threads: Avg: 0.4163ms Range: [0.3921ms, 0.4307ms] Ops/s: 76.86k Ops/s/t: 2.40k
  711. Operations per second per thread (weighted average): 249.39k
  712.  
  713. > std::queue
  714. (skipping, benchmark not supported...)
  715.  
  716. Overall average operations per second per thread (where higher-concurrency runs have more weight):
  717. (Take this summary with a grain of salt -- look at the individual benchmark results for a much
  718. better idea of how the queues measure up to each other):
  719. moodycamel::ConcurrentQueue (including bulk): 23.31M
  720. boost::lockfree::queue: 5.57M
  721. SimpleLockFreeQueue: 4.25M
  722. LockBasedQueue: 1.35M
  723. std::queue (single thread only): 527.72M
Advertisement
Add Comment
Please, Sign In to add comment