Benchmarking run at 2021-01-31 08:31:50 -0500 ruby v2.7.2, DHeap v0.6.1 ################################################################################ # Benchmarks with N=10 ################################################################################ == push N (N=10) ============================================================== Calculating ------------------------------------- push N (findmin) 9.717M i/s - 30.000M times in 3.087359s (102.91ns/i, 254clocks/i) push N (bsearch) 4.320M i/s - 600.000k times in 0.138891s (231.49ns/i, 496clocks/i) push N (rb_heap) 5.404M i/s - 12.000M times in 2.220663s (185.06ns/i, 422clocks/i) push N (c++ stl) 6.378M i/s - 18.000M times in 2.822057s (156.78ns/i, 395clocks/i) push N (c_dheap) 10.371M i/s - 30.000M times in 2.892808s (96.43ns/i, 273clocks/i) Comparison: push N (c_dheap): 10370547.5 i/s push N (findmin): 9717043.7 i/s - 1.07x slower push N (c++ stl): 6378325.6 i/s - 1.63x slower push N (rb_heap): 5403792.2 i/s - 1.92x slower push N (bsearch): 4319927.8 i/s - 2.40x slower == push N then pop N (N=10) ==================================================== Calculating ------------------------------------- push N + pop N (findmin) 7.721M i/s - 300.000k times in 0.038854s (129.51ns/i, 377clocks/i) push N + pop N (bsearch) 6.780M i/s - 1.200M times in 0.177001s (147.50ns/i, 401clocks/i) push N + pop N (rb_heap) 4.231M i/s - 6.000M times in 1.418156s (236.36ns/i, 517clocks/i) push N + pop N (c++ stl) 10.608M i/s - 18.000M times in 1.696896s (94.27ns/i, 214clocks/i) push N + pop N (c_dheap) 12.916M i/s - 18.000M times in 1.393570s (77.42ns/i, 136clocks/i) Comparison: push N + pop N (c_dheap): 12916469.1 i/s push N + pop N (c++ stl): 10607602.3 i/s - 1.22x slower push N + pop N (findmin): 7721268.8 i/s - 1.67x slower push N + pop N (bsearch): 6779608.4 i/s - 1.91x slower push N + pop N (rb_heap): 4230845.4 i/s - 3.05x slower == Push/pop with pre-filled queue (size=N) (N=10) ============================== Warming up -------------------------------------- push + pop (findmin) 5.119M i/s - 5.238M times in 1.023417s (195.37ns/i, 458clocks/i) push + pop (bsearch) 3.791M i/s - 3.940M times in 1.039431s (263.79ns/i, 510clocks/i) push + pop (rb_heap) 2.312M i/s - 2.376M times in 1.027837s (432.61ns/i) push + pop (c++ stl) 7.247M i/s - 7.344M times in 1.013381s (137.99ns/i, 366clocks/i) push + pop (c_dheap) 8.918M i/s - 9.151M times in 1.026085s (112.13ns/i, 223clocks/i) Calculating ------------------------------------- push + pop (findmin) 5.413M i/s - 15.356M times in 2.837024s (184.75ns/i, 534clocks/i) push + pop (bsearch) 3.971M i/s - 11.373M times in 2.863579s (251.80ns/i, 604clocks/i) push + pop (rb_heap) 2.296M i/s - 6.935M times in 3.020761s (435.61ns/i, 951clocks/i) push + pop (c++ stl) 7.823M i/s - 21.741M times in 2.778978s (127.82ns/i, 282clocks/i) push + pop (c_dheap) 9.854M i/s - 26.755M times in 2.715009s (101.48ns/i, 243clocks/i) Comparison: push + pop (c_dheap): 9854472.6 i/s push + pop (c++ stl): 7823282.4 i/s - 1.26x slower push + pop (findmin): 5412632.1 i/s - 1.82x slower push + pop (bsearch): 3971475.8 i/s - 2.48x slower push + pop (rb_heap): 2295653.2 i/s - 4.29x slower ################################################################################ # Benchmarks with N=30 ################################################################################ == push N (N=30) ============================================================== Calculating ------------------------------------- push N (findmin) 10.040M i/s - 30.000M times in 2.987977s (99.60ns/i, 198clocks/i) push N (bsearch) 3.544M i/s - 600.000k times in 0.169307s (282.18ns/i, 757clocks/i) push N (rb_heap) 5.017M i/s - 12.000M times in 2.391690s (199.31ns/i, 471clocks/i) push N (c++ stl) 7.401M i/s - 18.000M times in 2.432254s (135.13ns/i, 282clocks/i) push N (c_dheap) 10.496M i/s - 30.000M times in 2.858330s (95.28ns/i, 207clocks/i) Comparison: push N (c_dheap): 10495639.7 i/s push N (findmin): 10040237.6 i/s - 1.05x slower push N (c++ stl): 7400542.2 i/s - 1.42x slower push N (rb_heap): 5017372.7 i/s - 2.09x slower push N (bsearch): 3543867.6 i/s - 2.96x slower == push N then pop N (N=30) ==================================================== Calculating ------------------------------------- push N + pop N (findmin) 6.343M i/s - 300.000k times in 0.047296s (157.65ns/i, 353clocks/i) push N + pop N (bsearch) 5.591M i/s - 1.200M times in 0.214624s (178.85ns/i, 332clocks/i) push N + pop N (rb_heap) 3.162M i/s - 6.000M times in 1.897529s (316.25ns/i, 812clocks/i) push N + pop N (c++ stl) 10.068M i/s - 18.000M times in 1.787868s (99.33ns/i, 203clocks/i) push N + pop N (c_dheap) 11.903M i/s - 18.000M times in 1.512286s (84.02ns/i, 238clocks/i) Comparison: push N + pop N (c_dheap): 11902512.2 i/s push N + pop N (c++ stl): 10067858.5 i/s - 1.18x slower push N + pop N (findmin): 6343031.3 i/s - 1.88x slower push N + pop N (bsearch): 5591174.8 i/s - 2.13x slower push N + pop N (rb_heap): 3162007.3 i/s - 3.76x slower ################################################################################ # Benchmarks with N=32 ################################################################################ == Push/pop with pre-filled queue (size=N) (N=32) ============================== Warming up -------------------------------------- push + pop (findmin) 4.146M i/s - 4.168M times in 1.005262s (241.19ns/i, 574clocks/i) push + pop (bsearch) 3.067M i/s - 3.218M times in 1.049417s (326.09ns/i, 940clocks/i) push + pop (rb_heap) 1.849M i/s - 1.915M times in 1.036008s (540.96ns/i) push + pop (c++ stl) 6.561M i/s - 6.661M times in 1.015169s (152.40ns/i, 278clocks/i) push + pop (c_dheap) 8.786M i/s - 9.051M times in 1.030185s (113.82ns/i, 258clocks/i) Calculating ------------------------------------- push + pop (findmin) 4.478M i/s - 12.438M times in 2.777667s (223.31ns/i, 487clocks/i) push + pop (bsearch) 3.196M i/s - 9.200M times in 2.878768s (312.91ns/i, 813clocks/i) push + pop (rb_heap) 1.796M i/s - 5.546M times in 3.087197s (556.68ns/i) push + pop (c++ stl) 7.578M i/s - 19.684M times in 2.597487s (131.96ns/i, 282clocks/i) push + pop (c_dheap) 9.929M i/s - 26.357M times in 2.654479s (100.71ns/i, 239clocks/i) Comparison: push + pop (c_dheap): 9929261.3 i/s push + pop (c++ stl): 7578283.3 i/s - 1.31x slower push + pop (findmin): 4477993.9 i/s - 2.22x slower push + pop (bsearch): 3195760.4 i/s - 3.11x slower push + pop (rb_heap): 1796358.4 i/s - 5.53x slower ################################################################################ # Benchmarks with N=100 ################################################################################ == push N (N=100) ============================================================== Calculating ------------------------------------- push N (findmin) 9.981M i/s - 30.000M times in 3.005825s (100.19ns/i, 288clocks/i) push N (bsearch) 2.769M i/s - 600.000k times in 0.216676s (361.13ns/i, 855clocks/i) push N (rb_heap) 4.608M i/s - 12.000M times in 2.604252s (217.02ns/i, 522clocks/i) push N (c++ stl) 7.992M i/s - 18.000M times in 2.252363s (125.13ns/i, 314clocks/i) push N (c_dheap) 10.523M i/s - 30.000M times in 2.850989s (95.03ns/i, 246clocks/i) Comparison: push N (c_dheap): 10522662.6 i/s push N (findmin): 9980622.3 i/s - 1.05x slower push N (c++ stl): 7991608.3 i/s - 1.32x slower push N (rb_heap): 4607849.4 i/s - 2.28x slower push N (bsearch): 2769106.2 i/s - 3.80x slower == push N then pop N (N=100) ================================================== Calculating ------------------------------------- push N + pop N (findmin) 4.321M i/s - 300.000k times in 0.069422s (231.41ns/i, 481clocks/i) push N + pop N (bsearch) 4.809M i/s - 1.200M times in 0.249544s (207.95ns/i, 525clocks/i) push N + pop N (rb_heap) 2.467M i/s - 6.000M times in 2.431693s (405.28ns/i) push N + pop N (c++ stl) 9.317M i/s - 18.000M times in 1.931923s (107.33ns/i, 258clocks/i) push N + pop N (c_dheap) 10.954M i/s - 18.000M times in 1.643165s (91.29ns/i, 262clocks/i) Comparison: push N + pop N (c_dheap): 10954469.2 i/s push N + pop N (c++ stl): 9317140.2 i/s - 1.18x slower push N + pop N (bsearch): 4808770.2 i/s - 2.28x slower push N + pop N (findmin): 4321411.9 i/s - 2.53x slower push N + pop N (rb_heap): 2467417.0 i/s - 4.44x slower == Push/pop with pre-filled queue (size=N) (N=100) ============================ Warming up -------------------------------------- push + pop (findmin) 3.032M i/s - 3.085M times in 1.017682s (329.84ns/i, 793clocks/i) push + pop (bsearch) 2.602M i/s - 2.672M times in 1.026732s (384.28ns/i, 759clocks/i) push + pop (rb_heap) 1.551M i/s - 1.609M times in 1.038011s (644.94ns/i) push + pop (c++ stl) 6.826M i/s - 6.861M times in 1.005153s (146.49ns/i, 427clocks/i) push + pop (c_dheap) 8.588M i/s - 8.702M times in 1.013307s (116.44ns/i, 247clocks/i) Calculating ------------------------------------- push + pop (findmin) 3.149M i/s - 9.095M times in 2.887963s (317.52ns/i, 768clocks/i) push + pop (bsearch) 2.854M i/s - 7.807M times in 2.735737s (350.43ns/i, 720clocks/i) push + pop (rb_heap) 1.571M i/s - 4.652M times in 2.960926s (636.54ns/i) push + pop (c++ stl) 7.579M i/s - 20.479M times in 2.702015s (131.94ns/i, 331clocks/i) push + pop (c_dheap) 9.567M i/s - 25.765M times in 2.693102s (104.53ns/i, 210clocks/i) Comparison: push + pop (c_dheap): 9566872.5 i/s push + pop (c++ stl): 7579103.1 i/s - 1.26x slower push + pop (findmin): 3149419.4 i/s - 3.04x slower push + pop (bsearch): 2853617.8 i/s - 3.35x slower push + pop (rb_heap): 1570998.7 i/s - 6.09x slower ################################################################################ # Benchmarks with N=300 ################################################################################ == push N (N=300) ============================================================== Calculating ------------------------------------- push N (findmin) 10.204M i/s - 30.000M times in 2.940004s (98.00ns/i, 159clocks/i) push N (bsearch) 2.360M i/s - 600.000k times in 0.254221s (423.70ns/i, 935clocks/i) push N (rb_heap) 4.463M i/s - 12.000M times in 2.689036s (224.09ns/i, 530clocks/i) push N (c++ stl) 8.204M i/s - 18.000M times in 2.193957s (121.89ns/i, 356clocks/i) push N (c_dheap) 10.554M i/s - 30.000M times in 2.842477s (94.75ns/i, 276clocks/i) Comparison: push N (c_dheap): 10554176.5 i/s push N (findmin): 10204068.1 i/s - 1.03x slower push N (c++ stl): 8204354.5 i/s - 1.29x slower push N (rb_heap): 4462566.4 i/s - 2.37x slower push N (bsearch): 2360150.2 i/s - 4.47x slower == push N then pop N (N=300) ================================================== Calculating ------------------------------------- push N + pop N (findmin) 2.307M i/s - 300.000k times in 0.130056s (433.52ns/i, 903clocks/i) push N + pop N (bsearch) 4.125M i/s - 1.200M times in 0.290889s (242.41ns/i, 593clocks/i) push N + pop N (rb_heap) 2.101M i/s - 6.000M times in 2.855417s (475.90ns/i, 844clocks/i) push N + pop N (c++ stl) 8.707M i/s - 18.000M times in 2.067240s (114.85ns/i, 318clocks/i) push N + pop N (c_dheap) 10.261M i/s - 18.000M times in 1.754140s (97.45ns/i, 277clocks/i) Comparison: push N + pop N (c_dheap): 10261436.2 i/s push N + pop N (c++ stl): 8707262.9 i/s - 1.18x slower push N + pop N (bsearch): 4125279.4 i/s - 2.49x slower push N + pop N (findmin): 2306706.5 i/s - 4.45x slower push N + pop N (rb_heap): 2101269.3 i/s - 4.88x slower ################################################################################ # Benchmarks with N=316 ################################################################################ == Push/pop with pre-filled queue (size=N) (N=316) ============================ Warming up -------------------------------------- push + pop (findmin) 1.627M i/s - 1.651M times in 1.014236s (614.50ns/i) push + pop (bsearch) 2.260M i/s - 2.313M times in 1.023385s (442.46ns/i) push + pop (rb_heap) 1.288M i/s - 1.347M times in 1.045779s (776.16ns/i) push + pop (c++ stl) 6.086M i/s - 6.295M times in 1.034346s (164.31ns/i, 427clocks/i) push + pop (c_dheap) 8.076M i/s - 8.226M times in 1.018582s (123.83ns/i, 324clocks/i) Calculating ------------------------------------- push + pop (findmin) 1.668M i/s - 4.882M times in 2.926147s (599.37ns/i) push + pop (bsearch) 2.345M i/s - 6.780M times in 2.891943s (426.52ns/i) push + pop (rb_heap) 1.269M i/s - 3.865M times in 3.045697s (787.98ns/i) push + pop (c++ stl) 6.870M i/s - 18.258M times in 2.657550s (145.55ns/i, 289clocks/i) push + pop (c_dheap) 9.665M i/s - 24.227M times in 2.506716s (103.47ns/i, 221clocks/i) Comparison: push + pop (c_dheap): 9664758.0 i/s push + pop (c++ stl): 6870377.3 i/s - 1.41x slower push + pop (bsearch): 2344530.3 i/s - 4.12x slower push + pop (findmin): 1668416.3 i/s - 5.79x slower push + pop (rb_heap): 1269060.0 i/s - 7.62x slower ################################################################################ # Benchmarks with N=1,000 ################################################################################ == push N (N=1000) ============================================================ Calculating ------------------------------------- push N (findmin) 10.267M i/s - 30.000M times in 2.921868s (97.40ns/i, 243clocks/i) push N (bsearch) 2.000M i/s - 600.000k times in 0.300058s (500.10ns/i) push N (rb_heap) 4.408M i/s - 12.000M times in 2.722517s (226.88ns/i, 488clocks/i) push N (c++ stl) 8.171M i/s - 18.000M times in 2.202936s (122.39ns/i, 254clocks/i) push N (c_dheap) 10.455M i/s - 30.000M times in 2.869530s (95.65ns/i, 224clocks/i) Comparison: push N (c_dheap): 10454672.5 i/s push N (findmin): 10267402.5 i/s - 1.02x slower push N (c++ stl): 8170912.6 i/s - 1.28x slower push N (rb_heap): 4407685.6 i/s - 2.37x slower push N (bsearch): 1999614.9 i/s - 5.23x slower == push N then pop N (N=1000) ================================================== Calculating ------------------------------------- push N + pop N (findmin) 735.090k i/s - 300.000k times in 0.408113s (1.36μs/i) push N + pop N (bsearch) 3.587M i/s - 1.200M times in 0.334586s (278.82ns/i, 742clocks/i) push N + pop N (rb_heap) 1.799M i/s - 6.000M times in 3.336039s (556.01ns/i) push N + pop N (c++ stl) 8.115M i/s - 18.000M times in 2.218185s (123.23ns/i, 292clocks/i) push N + pop N (c_dheap) 9.283M i/s - 18.000M times in 1.939036s (107.72ns/i, 253clocks/i) Comparison: push N + pop N (c_dheap): 9282962.9 i/s push N + pop N (c++ stl): 8114741.7 i/s - 1.14x slower push N + pop N (bsearch): 3586521.9 i/s - 2.59x slower push N + pop N (rb_heap): 1798540.1 i/s - 5.16x slower push N + pop N (findmin): 735090.3 i/s - 12.63x slower == Push/pop with pre-filled queue (size=N) (N=1000) ============================ Warming up -------------------------------------- push + pop (findmin) 657.093k i/s - 672.360k times in 1.023235s (1.52μs/i) push + pop (bsearch) 2.094M i/s - 2.182M times in 1.041939s (477.56ns/i) push + pop (rb_heap) 1.228M i/s - 1.278M times in 1.040514s (814.00ns/i) push + pop (c++ stl) 6.181M i/s - 6.238M times in 1.009224s (161.78ns/i, 375clocks/i) push + pop (c_dheap) 6.881M i/s - 6.986M times in 1.015318s (145.33ns/i, 347clocks/i) Calculating ------------------------------------- push + pop (findmin) 656.982k i/s - 1.971M times in 3.000502s (1.52μs/i) push + pop (bsearch) 2.159M i/s - 6.282M times in 2.909771s (463.19ns/i, 907clocks/i) push + pop (rb_heap) 1.214M i/s - 3.685M times in 3.035461s (823.62ns/i) push + pop (c++ stl) 6.866M i/s - 18.543M times in 2.700613s (145.64ns/i, 347clocks/i) push + pop (c_dheap) 9.168M i/s - 20.643M times in 2.251669s (109.08ns/i, 223clocks/i) Comparison: push + pop (c_dheap): 9167926.8 i/s push + pop (c++ stl): 6866291.1 i/s - 1.34x slower push + pop (bsearch): 2158927.2 i/s - 4.25x slower push + pop (rb_heap): 1214146.7 i/s - 7.55x slower push + pop (findmin): 656982.4 i/s - 13.95x slower ################################################################################ # Benchmarks with N=3,000 ################################################################################ == push N (N=3000) ============================================================ Calculating ------------------------------------- push N (findmin) 10.260M i/s - 30.000M times in 2.923922s (97.46ns/i, 237clocks/i) push N (bsearch) 1.694M i/s - 600.000k times in 0.354106s (590.18ns/i) push N (rb_heap) 4.415M i/s - 12.000M times in 2.717734s (226.48ns/i, 545clocks/i) push N (c++ stl) 7.991M i/s - 18.000M times in 2.252536s (125.14ns/i, 309clocks/i) push N (c_dheap) 10.524M i/s - 30.000M times in 2.850733s (95.02ns/i, 205clocks/i) Comparison: push N (c_dheap): 10523609.1 i/s push N (findmin): 10260193.1 i/s - 1.03x slower push N (c++ stl): 7990992.5 i/s - 1.32x slower push N (rb_heap): 4415442.7 i/s - 2.38x slower push N (bsearch): 1694409.5 i/s - 6.21x slower == push N then pop N (N=3000) ================================================== Calculating ------------------------------------- push N + pop N (bsearch) 3.095M i/s - 1.200M times in 0.387763s (323.14ns/i, 873clocks/i) push N + pop N (rb_heap) 1.617M i/s - 6.000M times in 3.709670s (618.28ns/i) push N + pop N (c++ stl) 7.892M i/s - 18.000M times in 2.280843s (126.71ns/i, 307clocks/i) push N + pop N (c_dheap) 8.742M i/s - 18.000M times in 2.059004s (114.39ns/i, 337clocks/i) Comparison: push N + pop N (c_dheap): 8742091.2 i/s push N + pop N (c++ stl): 7891817.5 i/s - 1.11x slower push N + pop N (bsearch): 3094677.1 i/s - 2.82x slower push N + pop N (rb_heap): 1617394.7 i/s - 5.41x slower ################################################################################ # Benchmarks with N=3,162 ################################################################################ == Push/pop with pre-filled queue (size=N) (N=3162) ============================ Warming up -------------------------------------- push + pop (findmin) 218.524k i/s - 225.030k times in 1.029772s (4.58μs/i) push + pop (bsearch) 1.784M i/s - 1.818M times in 1.018826s (560.50ns/i) push + pop (rb_heap) 906.303k i/s - 906.848k times in 1.000601s (1.10μs/i) push + pop (c++ stl) 5.662M i/s - 5.788M times in 1.022279s (176.61ns/i, 397clocks/i) push + pop (c_dheap) 7.653M i/s - 7.799M times in 1.019106s (130.67ns/i, 268clocks/i) Calculating ------------------------------------- push + pop (findmin) 213.811k i/s - 655.572k times in 3.066131s (4.68μs/i) push + pop (bsearch) 1.942M i/s - 5.352M times in 2.755670s (514.86ns/i) push + pop (rb_heap) 945.426k i/s - 2.719M times in 2.875855s (1.06μs/i) push + pop (c++ stl) 6.251M i/s - 16.987M times in 2.717417s (159.97ns/i, 371clocks/i) push + pop (c_dheap) 8.645M i/s - 22.958M times in 2.655715s (115.68ns/i, 266clocks/i) Comparison: push + pop (c_dheap): 8644863.6 i/s push + pop (c++ stl): 6251071.8 i/s - 1.38x slower push + pop (bsearch): 1942294.3 i/s - 4.45x slower push + pop (rb_heap): 945426.2 i/s - 9.14x slower push + pop (findmin): 213810.8 i/s - 40.43x slower ################################################################################ # Benchmarks with N=10,000 ################################################################################ == push N (N=10000) ============================================================ Calculating ------------------------------------- push N (findmin) 10.192M i/s - 30.000M times in 2.943544s (98.12ns/i, 210clocks/i) push N (bsearch) 1.214M i/s - 600.000k times in 0.494405s (824.01ns/i) push N (rb_heap) 4.369M i/s - 12.000M times in 2.746465s (228.87ns/i, 494clocks/i) push N (c++ stl) 8.211M i/s - 18.000M times in 2.192209s (121.79ns/i, 258clocks/i) push N (c_dheap) 10.445M i/s - 30.000M times in 2.872301s (95.74ns/i, 230clocks/i) Comparison: push N (c_dheap): 10444588.3 i/s push N (findmin): 10191797.4 i/s - 1.02x slower push N (c++ stl): 8210895.4 i/s - 1.27x slower push N (rb_heap): 4369252.9 i/s - 2.39x slower push N (bsearch): 1213580.4 i/s - 8.61x slower == push N then pop N (N=10000) ================================================ Calculating ------------------------------------- push N + pop N (bsearch) 2.257M i/s - 1.200M times in 0.531668s (443.06ns/i) push N + pop N (rb_heap) 1.439M i/s - 6.000M times in 4.168970s (694.83ns/i) push N + pop N (c++ stl) 7.366M i/s - 18.000M times in 2.443772s (135.77ns/i, 353clocks/i) push N + pop N (c_dheap) 8.084M i/s - 18.000M times in 2.226631s (123.70ns/i, 269clocks/i) Comparison: push N + pop N (c_dheap): 8083962.7 i/s push N + pop N (c++ stl): 7365661.8 i/s - 1.10x slower push N + pop N (bsearch): 2257047.9 i/s - 3.58x slower push N + pop N (rb_heap): 1439204.3 i/s - 5.62x slower == Push/pop with pre-filled queue (size=N) (N=10000) ========================== Warming up -------------------------------------- push + pop (findmin) 38.436k i/s - 38.985k times in 1.014294s (26.02μs/i) push + pop (bsearch) 1.701M i/s - 1.806M times in 1.061608s (587.89ns/i) push + pop (rb_heap) 829.401k i/s - 851.418k times in 1.026545s (1.21μs/i) push + pop (c++ stl) 4.996M i/s - 5.179M times in 1.036658s (200.16ns/i, 533clocks/i) push + pop (c_dheap) 6.884M i/s - 6.916M times in 1.004562s (145.26ns/i, 320clocks/i) Calculating ------------------------------------- push + pop (findmin) 42.033k i/s - 115.306k times in 2.743242s (23.79μs/i) push + pop (bsearch) 1.699M i/s - 5.103M times in 3.003166s (588.51ns/i) push + pop (rb_heap) 844.004k i/s - 2.488M times in 2.948094s (1.18μs/i) push + pop (c++ stl) 5.720M i/s - 14.988M times in 2.620286s (174.83ns/i, 439clocks/i) push + pop (c_dheap) 8.029M i/s - 20.653M times in 2.572341s (124.55ns/i, 239clocks/i) Comparison: push + pop (c_dheap): 8028814.5 i/s push + pop (c++ stl): 5719855.1 i/s - 1.40x slower push + pop (bsearch): 1699219.0 i/s - 4.73x slower push + pop (rb_heap): 844004.1 i/s - 9.51x slower push + pop (findmin): 42032.8 i/s - 191.01x slower ################################################################################ # Benchmarks with N=30,000 ################################################################################ == push N (N=30000) ============================================================ Calculating ------------------------------------- push N (findmin) 10.286M i/s - 30.000M times in 2.916695s (97.22ns/i, 246clocks/i) push N (bsearch) 626.769k i/s - 600.000k times in 0.957290s (1.60μs/i) push N (rb_heap) 4.372M i/s - 12.000M times in 2.744993s (228.75ns/i, 586clocks/i) push N (c++ stl) 7.925M i/s - 18.000M times in 2.271289s (126.18ns/i, 363clocks/i) push N (c_dheap) 10.471M i/s - 30.000M times in 2.865042s (95.50ns/i, 209clocks/i) Comparison: push N (c_dheap): 10471051.5 i/s push N (findmin): 10285616.0 i/s - 1.02x slower push N (c++ stl): 7925015.4 i/s - 1.32x slower push N (rb_heap): 4371595.7 i/s - 2.40x slower push N (bsearch): 626769.1 i/s - 16.71x slower == push N then pop N (N=30000) ================================================ Calculating ------------------------------------- push N + pop N (bsearch) 1.223M i/s - 1.200M times in 0.981407s (817.84ns/i) push N + pop N (rb_heap) 1.305M i/s - 6.000M times in 4.596226s (766.04ns/i) push N + pop N (c++ stl) 6.965M i/s - 18.000M times in 2.584494s (143.58ns/i, 379clocks/i) push N + pop N (c_dheap) 7.438M i/s - 18.000M times in 2.419970s (134.44ns/i, 271clocks/i) Comparison: push N + pop N (c_dheap): 7438108.8 i/s push N + pop N (c++ stl): 6964611.7 i/s - 1.07x slower push N + pop N (rb_heap): 1305418.8 i/s - 5.70x slower push N + pop N (bsearch): 1222734.6 i/s - 6.08x slower ################################################################################ # Benchmarks with N=31,623 ################################################################################ == Push/pop with pre-filled queue (size=N) (N=31623) ========================== Warming up -------------------------------------- push + pop (findmin) 4.101k i/s - 4.296k times in 1.047474s (243.83μs/i) push + pop (bsearch) 1.422M i/s - 1.433M times in 1.007735s (703.26ns/i) push + pop (rb_heap) 808.387k i/s - 842.904k times in 1.042698s (1.24μs/i) push + pop (c++ stl) 4.707M i/s - 4.894M times in 1.039760s (212.47ns/i, 498clocks/i) push + pop (c_dheap) 6.838M i/s - 6.889M times in 1.007490s (146.25ns/i, 383clocks/i) Calculating ------------------------------------- push + pop (findmin) 4.386k i/s - 12.303k times in 2.805010s (227.99μs/i) push + pop (bsearch) 1.416M i/s - 4.266M times in 3.012567s (706.20ns/i) push + pop (rb_heap) 824.220k i/s - 2.425M times in 2.942372s (1.21μs/i) push + pop (c++ stl) 5.005M i/s - 14.120M times in 2.821127s (199.80ns/i, 408clocks/i) push + pop (c_dheap) 7.584M i/s - 20.513M times in 2.704950s (131.87ns/i, 319clocks/i) Comparison: push + pop (c_dheap): 7583504.1 i/s push + pop (c++ stl): 5005005.3 i/s - 1.52x slower push + pop (bsearch): 1416019.5 i/s - 5.36x slower push + pop (rb_heap): 824219.7 i/s - 9.20x slower push + pop (findmin): 4386.1 i/s - 1728.99x slower ################################################################################ # Benchmarks with N=100,000 ################################################################################ == push N (N=100000) ========================================================== Calculating ------------------------------------- push N (findmin) 10.279M i/s - 30.000M times in 2.918590s (97.29ns/i, 244clocks/i) push N (bsearch) 220.832k i/s - 600.000k times in 2.717000s (4.53μs/i) push N (rb_heap) 4.384M i/s - 12.000M times in 2.736961s (228.08ns/i, 561clocks/i) push N (c++ stl) 7.739M i/s - 18.000M times in 2.325853s (129.21ns/i, 317clocks/i) push N (c_dheap) 10.446M i/s - 30.000M times in 2.872022s (95.73ns/i, 170clocks/i) Comparison: push N (c_dheap): 10445603.0 i/s push N (findmin): 10278935.5 i/s - 1.02x slower push N (c++ stl): 7739095.9 i/s - 1.35x slower push N (rb_heap): 4384424.4 i/s - 2.38x slower push N (bsearch): 220831.8 i/s - 47.30x slower == push N then pop N (N=100000) ================================================ Calculating ------------------------------------- push N + pop N (bsearch) 443.386k i/s - 1.200M times in 2.706446s (2.26μs/i) push N + pop N (rb_heap) 1.174M i/s - 6.000M times in 5.112169s (852.03ns/i) push N + pop N (c++ stl) 6.467M i/s - 18.000M times in 2.783322s (154.63ns/i, 423clocks/i) push N + pop N (c_dheap) 6.772M i/s - 18.000M times in 2.658145s (147.67ns/i, 380clocks/i) Comparison: push N + pop N (c_dheap): 6771640.7 i/s push N + pop N (c++ stl): 6467092.5 i/s - 1.05x slower push N + pop N (rb_heap): 1173670.1 i/s - 5.77x slower push N + pop N (bsearch): 443385.9 i/s - 15.27x slower == Push/pop with pre-filled queue (size=N) (N=100000) ========================== Warming up -------------------------------------- push + pop (findmin) 1.081k i/s - 1.090k times in 1.008121s (924.88μs/i) push + pop (bsearch) 93.746k i/s - 94.380k times in 1.006760s (10.67μs/i) push + pop (rb_heap) 614.413k i/s - 617.988k times in 1.005818s (1.63μs/i) push + pop (c++ stl) 4.384M i/s - 4.526M times in 1.032424s (228.10ns/i, 367clocks/i) push + pop (c_dheap) 6.357M i/s - 6.395M times in 1.006052s (157.31ns/i, 351clocks/i) Calculating ------------------------------------- push + pop (findmin) 1.118k i/s - 3.243k times in 2.901718s (894.76μs/i) push + pop (bsearch) 126.592k i/s - 281.238k times in 2.221611s (7.90μs/i) push + pop (rb_heap) 640.816k i/s - 1.843M times in 2.876396s (1.56μs/i) push + pop (c++ stl) 4.598M i/s - 13.152M times in 2.860115s (217.47ns/i, 548clocks/i) push + pop (c_dheap) 7.040M i/s - 19.070M times in 2.708918s (142.05ns/i, 402clocks/i) Comparison: push + pop (c_dheap): 7039813.2 i/s push + pop (c++ stl): 4598367.9 i/s - 1.53x slower push + pop (rb_heap): 640815.8 i/s - 10.99x slower push + pop (bsearch): 126591.9 i/s - 55.61x slower push + pop (findmin): 1117.6 i/s - 6298.97x slower ################################################################################ # Benchmarks with N=300,000 ################################################################################ == push N (N=300000) ========================================================== Calculating ------------------------------------- push N (findmin) 10.292M i/s - 30.000M times in 2.914849s (97.16ns/i, 216clocks/i) push N (rb_heap) 4.366M i/s - 12.000M times in 2.748236s (229.02ns/i, 508clocks/i) push N (c++ stl) 7.606M i/s - 18.000M times in 2.366608s (131.48ns/i, 237clocks/i) push N (c_dheap) 10.406M i/s - 30.000M times in 2.882976s (96.10ns/i, 239clocks/i) Comparison: push N (c_dheap): 10405915.1 i/s push N (findmin): 10292126.6 i/s - 1.01x slower push N (c++ stl): 7605822.4 i/s - 1.37x slower push N (rb_heap): 4366436.9 i/s - 2.38x slower == push N then pop N (N=300000) ================================================ Calculating ------------------------------------- push N + pop N (rb_heap) 1.090M i/s - 6.000M times in 5.503067s (917.18ns/i) push N + pop N (c++ stl) 6.194M i/s - 18.000M times in 2.906249s (161.46ns/i, 397clocks/i) push N + pop N (c_dheap) 5.898M i/s - 18.000M times in 3.051953s (169.55ns/i, 380clocks/i) Comparison: push N + pop N (c++ stl): 6193550.8 i/s push N + pop N (c_dheap): 5897862.5 i/s - 1.05x slower push N + pop N (rb_heap): 1090301.2 i/s - 5.68x slower ################################################################################ # Benchmarks with N=316,228 ################################################################################ == Push/pop with pre-filled queue (size=N) (N=316228) ========================== Warming up -------------------------------------- push + pop (findmin) 329.363 i/s - 340.000 times in 1.032295s (3.04ms/i) push + pop (bsearch) 26.855k i/s - 27.870k times in 1.037803s (37.24μs/i) push + pop (rb_heap) 510.061k i/s - 516.120k times in 1.011878s (1.96μs/i) push + pop (c++ stl) 3.662M i/s - 3.787M times in 1.034233s (273.07ns/i, 485clocks/i) push + pop (c_dheap) 5.829M i/s - 5.952M times in 1.021078s (171.56ns/i, 409clocks/i) Calculating ------------------------------------- push + pop (findmin) 336.903 i/s - 988.000 times in 2.932592s (2.97ms/i) push + pop (bsearch) 26.374k i/s - 80.564k times in 3.054645s (37.92μs/i) push + pop (rb_heap) 586.229k i/s - 1.530M times in 2.610215s (1.71μs/i) push + pop (c++ stl) 4.199M i/s - 10.986M times in 2.616590s (238.17ns/i, 562clocks/i) push + pop (c_dheap) 6.651M i/s - 17.486M times in 2.628997s (150.35ns/i, 320clocks/i) Comparison: push + pop (c_dheap): 6651247.1 i/s push + pop (c++ stl): 4198720.4 i/s - 1.58x slower push + pop (rb_heap): 586229.1 i/s - 11.35x slower push + pop (bsearch): 26374.3 i/s - 252.19x slower push + pop (findmin): 336.9 i/s - 19742.30x slower ################################################################################ # Benchmarks with N=1,000,000 ################################################################################ == push N (N=1000000) ========================================================== Calculating ------------------------------------- push N (findmin) 9.964M i/s - 30.000M times in 3.010870s (100.36ns/i, 238clocks/i) push N (rb_heap) 4.350M i/s - 12.000M times in 2.758547s (229.88ns/i, 403clocks/i) push N (c++ stl) 7.892M i/s - 18.000M times in 2.280812s (126.71ns/i, 234clocks/i) push N (c_dheap) 10.342M i/s - 30.000M times in 2.900741s (96.69ns/i, 217clocks/i) Comparison: push N (c_dheap): 10342183.7 i/s push N (findmin): 9963898.8 i/s - 1.04x slower push N (c++ stl): 7891924.8 i/s - 1.31x slower push N (rb_heap): 4350116.0 i/s - 2.38x slower == push N then pop N (N=1000000) ============================================== Calculating ------------------------------------- push N + pop N (rb_heap) 976.689k i/s - 6.000M times in 6.143207s (1.02μs/i) push N + pop N (c++ stl) 5.275M i/s - 18.000M times in 3.412544s (189.59ns/i, 371clocks/i) push N + pop N (c_dheap) 4.731M i/s - 18.000M times in 3.804598s (211.37ns/i, 510clocks/i) Comparison: push N + pop N (c++ stl): 5274657.5 i/s push N + pop N (c_dheap): 4731117.9 i/s - 1.11x slower push N + pop N (rb_heap): 976688.6 i/s - 5.40x slower == Push/pop with pre-filled queue (size=N) (N=1000000) ======================== Warming up -------------------------------------- push + pop (findmin) 133.958 i/s - 140.000 times in 1.045105s (7.47ms/i) push + pop (bsearch) 5.157k i/s - 5.170k times in 1.002466s (193.90μs/i) push + pop (rb_heap) 530.099k i/s - 553.995k times in 1.045078s (1.89μs/i) push + pop (c++ stl) 3.008M i/s - 3.068M times in 1.019941s (332.45ns/i, 961clocks/i) push + pop (c_dheap) 3.792M i/s - 3.850M times in 1.015408s (263.74ns/i, 606clocks/i) Calculating ------------------------------------- push + pop (findmin) 133.988 i/s - 401.000 times in 2.992798s (7.46ms/i) push + pop (bsearch) 5.009k i/s - 15.471k times in 3.088774s (199.65μs/i) push + pop (rb_heap) 542.219k i/s - 1.590M times in 2.932944s (1.84μs/i) push + pop (c++ stl) 3.504M i/s - 9.024M times in 2.575239s (285.38ns/i, 601clocks/i) push + pop (c_dheap) 4.702M i/s - 11.375M times in 2.419358s (212.70ns/i, 603clocks/i) Comparison: push + pop (c_dheap): 4701505.8 i/s push + pop (c++ stl): 3504115.7 i/s - 1.34x slower push + pop (rb_heap): 542219.0 i/s - 8.67x slower push + pop (bsearch): 5008.8 i/s - 938.65x slower push + pop (findmin): 134.0 i/s - 35088.93x slower ################################################################################ # Benchmarks with N=3,000,000 ################################################################################ == push N (N=3000000) ========================================================== Calculating ------------------------------------- push N (findmin) 10.061M i/s - 30.000M times in 2.981862s (99.40ns/i, 291clocks/i) push N (rb_heap) 4.332M i/s - 12.000M times in 2.769993s (230.83ns/i, 666clocks/i) push N (c++ stl) 7.700M i/s - 18.000M times in 2.337763s (129.88ns/i, 272clocks/i) push N (c_dheap) 10.306M i/s - 30.000M times in 2.910863s (97.03ns/i, 231clocks/i) Comparison: push N (c_dheap): 10306222.6 i/s push N (findmin): 10060827.1 i/s - 1.02x slower push N (c++ stl): 7699668.9 i/s - 1.34x slower push N (rb_heap): 4332141.2 i/s - 2.38x slower == push N then pop N (N=3000000) ============================================== Calculating ------------------------------------- push N + pop N (rb_heap) 844.839k i/s - 6.000M times in 7.101946s (1.18μs/i) push N + pop N (c++ stl) 4.417M i/s - 18.000M times in 4.075439s (226.41ns/i, 576clocks/i) push N + pop N (c_dheap) 4.006M i/s - 18.000M times in 4.493805s (249.66ns/i, 359clocks/i) Comparison: push N + pop N (c++ stl): 4416702.3 i/s push N + pop N (c_dheap): 4005514.5 i/s - 1.10x slower push N + pop N (rb_heap): 844838.9 i/s - 5.23x slower ################################################################################ # Benchmarks with N=3,162,278 ################################################################################ == Push/pop with pre-filled queue (size=N) (N=3162278) ======================== Warming up -------------------------------------- push + pop (findmin) 40.806 i/s - 45.000 times in 1.102775s (24.51ms/i) push + pop (bsearch) 959.453 i/s - 968.000 times in 1.008908s (1.04ms/i) push + pop (rb_heap) 465.404k i/s - 502.801k times in 1.080353s (2.15μs/i) push + pop (c++ stl) 2.153M i/s - 2.167M times in 1.006608s (464.52ns/i) push + pop (c_dheap) 2.301M i/s - 2.320M times in 1.007969s (434.52ns/i, 912clocks/i) Calculating ------------------------------------- push + pop (findmin) 41.611 i/s - 122.000 times in 2.931911s (24.03ms/i) push + pop (bsearch) 984.072 i/s - 2.878k times in 2.924583s (1.02ms/i) push + pop (rb_heap) 463.971k i/s - 1.396M times in 3.009265s (2.16μs/i) push + pop (c++ stl) 2.514M i/s - 6.458M times in 2.569153s (397.81ns/i, 749clocks/i) push + pop (c_dheap) 2.845M i/s - 6.904M times in 2.426969s (351.52ns/i) Comparison: push + pop (c_dheap): 2844751.4 i/s push + pop (c++ stl): 2513767.5 i/s - 1.13x slower push + pop (rb_heap): 463971.4 i/s - 6.13x slower push + pop (bsearch): 984.1 i/s - 2890.80x slower push + pop (findmin): 41.6 i/s - 68365.22x slower ################################################################################ # Benchmarks with N=10,000,000 ################################################################################ == Push/pop with pre-filled queue (size=N) (N=10000000) ======================== Warming up -------------------------------------- push + pop (findmin) 12.805 i/s - 14.000 times in 1.093356s (78.10ms/i) push + pop (bsearch) 286.818 i/s - 308.000 times in 1.073852s (3.49ms/i) push + pop (rb_heap) 450.346k i/s - 452.478k times in 1.004734s (2.22μs/i) push + pop (c++ stl) 1.816M i/s - 1.816M times in 0.999712s (550.55ns/i) push + pop (c_dheap) 1.720M i/s - 1.725M times in 1.002939s (581.52ns/i) Calculating ------------------------------------- push + pop (findmin) 12.962 i/s - 38.000 times in 2.931734s (77.15ms/i) push + pop (bsearch) 315.781 i/s - 860.000 times in 2.723405s (3.17ms/i) push + pop (rb_heap) 445.131k i/s - 1.351M times in 3.035144s (2.25μs/i) push + pop (c++ stl) 1.962M i/s - 5.449M times in 2.777382s (509.70ns/i) push + pop (c_dheap) 1.916M i/s - 5.159M times in 2.692582s (521.93ns/i) Comparison: push + pop (c++ stl): 1961952.2 i/s push + pop (c_dheap): 1915981.2 i/s - 1.02x slower push + pop (rb_heap): 445131.4 i/s - 4.41x slower push + pop (bsearch): 315.8 i/s - 6213.01x slower push + pop (findmin): 13.0 i/s - 151366.37x slower