Single Producer Single Consumer Benchmarks - noneshallpass/lockless GitHub Wiki
On my core i3 dual core laptop with a light load, the benchmark test outputs something like this. Each run is for 1 Million pushes and pops 50x each. Note that the bounded queue runs ~40% faster than either the unbounded lockless or locking queues, which have roughly the same performance in this test. However, the lockless queues tend to have less jitter; that is, the lockless queues have a narrower time spread around the average time.
-
[==========] Running 3 benchmarks.
-
[ RUN ] SPSCLocklessQueueBenchMarkTest.UnBoundedLockLessRandomData (50 runs, 1 iteration per run)
-
[ DONE ] SPSCLocklessQueueBenchMarkTest.UnBoundedLockLessRandomData (24889.835000 ms)
-
[ RUNS ]
Average time: 497796.700000 us Fastest: 444859 us (-52937.700000 us / -10.634402 %) Slowest: 621285 us (+123488.300000 us / +24.806974 %) Average performance: 2.008852 runs/s Best performance: 2.247903 runs/s (+0.239051 runs/s / +11.899883 %) Worst performance: 1.609567 runs/s (-0.399285 runs/s / -19.876273 %)
-
[ RUN ] SPSCLocklessQueueBenchMarkTest.BoundedLockLessRandomData (50 runs, 1 iteration per run)
-
[ DONE ] SPSCLocklessQueueBenchMarkTest.BoundedLockLessRandomData (14889.005000 ms)
-
[ RUNS ]
Average time: 297780.100000 us Fastest: 269255 us (-28525.100000 us / -9.579250 %) Slowest: 333938 us (+36157.900000 us / +12.142484 %) Average performance: 3.358183 runs/s Best performance: 3.713951 runs/s (+0.355769 runs/s / +10.594084 %) Worst performance: 2.994568 runs/s (-0.363615 runs/s / -10.827729 %)
-
[ RUN ] SPSCLocklessQueueBenchMarkTest.LockingRandomData (50 runs, 1 iteration per run)
-
[ DONE ] SPSCLocklessQueueBenchMarkTest.LockingRandomData (32922.688000 ms)
-
[ RUNS ]
Average time: 658453.760000 us Fastest: 533779 us (-124674.760000 us / -18.934475 %) Slowest: 1485693 us (+827239.240000 us / +125.633612 %) Average performance: 1.518710 runs/s Best performance: 1.873435 runs/s (+0.354725 runs/s / +23.357000 %) Worst performance: 0.673087 runs/s (-0.845623 runs/s / -55.680362 %)
[==========] Ran 3 benchmarks.