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.