d_heap 0.6.1 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
data/d_heap.gemspec CHANGED
@@ -8,7 +8,7 @@ Gem::Specification.new do |spec|
8
8
  spec.authors = ["nicholas a. evans"]
9
9
  spec.email = ["nicholas.evans@gmail.com"]
10
10
 
11
- spec.summary = "A d-ary heap implementation, for priority queues"
11
+ spec.summary = "very fast min-heap priority queue"
12
12
  spec.description = <<~DESC
13
13
  A C extension implementation of a d-ary heap data structure, suitable for
14
14
  use in e.g. priority queues or Djikstra's algorithm.
@@ -21,11 +21,22 @@ Gem::Specification.new do |spec|
21
21
  spec.metadata["source_code_uri"] = spec.homepage
22
22
  spec.metadata["changelog_uri"] = "#{spec.homepage}/blob/master/CHANGELOG.md"
23
23
 
24
- # Specify which files should be added to the gem when it is released.
25
- # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
26
- spec.files = Dir.chdir(File.expand_path(__dir__)) {
27
- `git ls-files -z`.split("\x0").reject {|f| f.match(%r{^(test|spec|features)/}) }
24
+ # Specify which files should be added to the gem when it is released. The
25
+ # `git ls-files -z` loads the files in the gem that have been added into git.
26
+ git_ls_files = Dir.chdir(File.expand_path(__dir__)) {
27
+ `git ls-files -z`.split("\x0")
28
28
  }
29
+ exclude_paths_re = %r{
30
+ \A(
31
+ \.rspec|
32
+ Rakefile|
33
+ Gemfile|
34
+ N\z|
35
+ (benchmarks|bin|spec)/|
36
+ lib/d_heap/benchmarks
37
+ )
38
+ }x
39
+ spec.files = git_ls_files.reject {|f| f.match(exclude_paths_re) }
29
40
  spec.bindir = "exe"
30
41
  spec.executables = spec.files.grep(%r{^exe/}) {|f| File.basename(f) }
31
42
  spec.require_paths = ["lib"]
@@ -1,75 +1,93 @@
1
+ Benchmarking run at 2021-01-25 23:31:48 -0500
2
+ ruby v2.7.2, DHeap v0.6.1
3
+
1
4
  Warming up --------------------------------------
2
- push + pop (findmin) 136.044 i/s - 140.000 times in 1.029078s (7.35ms/i)
3
- push + pop (bsearch) 5.700k i/s - 5.984k times in 1.049902s (175.45μs/i)
4
- push + pop (rb_heap) 466.447k i/s - 496.977k times in 1.065453s (2.14μs/i)
5
- push + pop (c++ stl) 3.023M i/s - 3.038M times in 1.004830s (330.81ns/i, 794clocks/i)
6
- push + pop (c_dheap) 3.579M i/s - 3.620M times in 1.011429s (279.40ns/i, 785clocks/i)
5
+ push + pop (findmin) 135.463 i/s - 686.000 times in 5.064119s (7.38ms/i)
6
+ push + pop (bsearch) 5.453k i/s - 27.489k times in 5.040925s (183.38μs/i)
7
+ push + pop (rb_heap) 647.863k i/s - 3.270M times in 5.048030s (1.54μs/i)
8
+ push + pop (c++ stl) 3.923M i/s - 19.658M times in 5.011369s (254.93ns/i, 587clocks/i)
9
+ push + pop (c_dheap) 5.613M i/s - 28.125M times in 5.010621s (178.16ns/i, 450clocks/i)
7
10
  Calculating -------------------------------------
8
- bin/bench_n 1000000 bin/bench_n 10000 bin/bench_n 25000 bin/bench_n 50000 bin/bench_n 100000 bin/bench_n 250000 bin/bench_n 500000 bin/bench_n 10000000 bin/bench_n 2500000 bin/bench_n 5000000
9
- push + pop (findmin) 136.690 11.014k 4.426k 2.178k 1.084k 408.671 215.680 13.169 52.037 26.307 i/s - 408.000 times in 2.984861s 0.037045s 0.092186s 0.187334s 0.376306s 0.998359s 1.891687s 30.981982s 7.840594s 15.509132s
10
- push + pop (bsearch) 5.639k 786.334k 364.964k 200.521k 88.607k 34.530k 17.965k 288.811 1.302k 592.009 i/s - 17.098k times in 3.032244s 0.021744s 0.046848s 0.085268s 0.192965s 0.495157s 0.951721s 59.201408s 13.131805s 28.881310s
11
- push + pop (rb_heap) 513.523k 736.618k 670.187k 618.157k 579.251k 572.795k 543.648k 423.119k 460.849k 445.235k i/s - 1.399M times in 2.724978s 1.899681s 2.087985s 2.263730s 2.415776s 2.443003s 2.573980s 3.307202s 3.036440s 3.142928s
12
- push + pop (c++ stl) 3.396M 4.902M 4.794M 4.532M 4.316M 4.204M 3.903M 2.022M 2.659M 2.347M i/s - 9.069M times in 2.670712s 1.850114s 1.891786s 2.001185s 2.101354s 2.157093s 2.323676s 4.484351s 3.410224s 3.864573s
13
- push + pop (c_dheap) 4.403M 7.311M 6.407M 6.738M 6.254M 5.918M 5.126M 2.138M 3.304M 2.665M i/s - 10.737M times in 2.438365s 1.468580s 1.675785s 1.593589s 1.716764s 1.814447s 2.094553s 5.022305s 3.249709s 4.029170s
11
+ N 1000000 N 10000000 N 3162278 N 316228 N 100000 N 31623 N 10000 N 3162 N 1000 N 316 N 100 N 32 N 10
12
+ push + pop (findmin) 135.943 12.869 41.182 343.249 1.097k 3.587k 12.631k 50.336k 224.814k 948.877k 2.595M 4.202M 5.480M i/s - 2.031k times in 14.940053s 157.815976s 49.317074s 5.916981s 1.850898s 0.566265s 0.160799s 0.040349s 0.009034s 0.002140s 0.000783s 0.000483s 0.000371s
13
+ push + pop (bsearch) 5.356k 281.895 971.955 26.362k 81.121k 412.392k 1.210M 1.829M 2.203M 2.396M 2.904M 3.214M 3.931M i/s - 81.797k times in 15.271966s 290.167837s 84.157151s 3.102831s 1.008328s 0.198348s 0.067624s 0.044714s 0.037127s 0.034134s 0.028165s 0.025451s 0.020806s
14
+ push + pop (rb_heap) 673.578k 467.512k 465.936k 718.419k 732.549k 943.118k 950.389k 1.062M 1.263M 1.356M 1.604M 1.857M 2.326M i/s - 9.718M times in 14.427345s 20.786487s 20.856821s 13.526848s 13.265927s 10.304049s 10.225219s 9.152454s 7.697285s 7.165792s 6.060302s 5.233045s 4.178291s
15
+ push + pop (c++ stl) 4.171M 2.737M 3.458M 4.402M 4.842M 5.503M 5.731M 6.319M 6.899M 7.084M 7.393M 7.772M 7.707M i/s - 58.839M times in 14.106950s 21.496544s 17.014548s 13.366627s 12.150850s 10.692853s 10.266595s 9.311420s 8.528926s 8.305938s 7.958634s 7.570905s 7.634693s
16
+ push + pop (c_dheap) 6.490M 3.735M 5.231M 7.280M 7.150M 7.670M 8.045M 8.704M 9.340M 9.688M 9.669M 9.921M 10.196M i/s - 84.195M times in 12.972480s 22.542978s 16.096451s 11.564531s 11.775039s 10.976519s 10.465346s 9.673356s 9.014859s 8.690250s 8.707992s 8.486921s 8.257262s
14
17
 
15
18
  Comparison:
16
19
  push + pop (findmin)
17
- bin/bench_n 10000: 11013.7 i/s
18
- bin/bench_n 25000: 4425.8 i/s - 2.49x slower
19
- bin/bench_n 50000: 2177.9 i/s - 5.06x slower
20
- bin/bench_n 100000: 1084.2 i/s - 10.16x slower
21
- bin/bench_n 250000: 408.7 i/s - 26.95x slower
22
- bin/bench_n 500000: 215.7 i/s - 51.06x slower
23
- bin/bench_n 1000000: 136.7 i/s - 80.57x slower
24
- bin/bench_n 2500000: 52.0 i/s - 211.65x slower
25
- bin/bench_n 5000000: 26.3 i/s - 418.66x slower
26
- bin/bench_n 10000000: 13.2 i/s - 836.34x slower
20
+ N 10: 5480288.0 i/s
21
+ N 32: 4202409.8 i/s - 1.30x slower
22
+ N 100: 2595178.8 i/s - 2.11x slower
23
+ N 316: 948876.5 i/s - 5.78x slower
24
+ N 1000: 224813.9 i/s - 24.38x slower
25
+ N 3162: 50336.4 i/s - 108.87x slower
26
+ N 10000: 12630.7 i/s - 433.89x slower
27
+ N 31623: 3586.7 i/s - 1527.96x slower
28
+ N 100000: 1097.3 i/s - 4994.31x slower
29
+ N 316228: 343.2 i/s - 15965.91x slower
30
+ N 1000000: 135.9 i/s - 40313.05x slower
31
+ N 3162278: 41.2 i/s - 133073.25x slower
32
+ N 10000000: 12.9 i/s - 425838.01x slower
27
33
 
28
34
  push + pop (bsearch)
29
- bin/bench_n 10000: 786334.2 i/s
30
- bin/bench_n 25000: 364963.8 i/s - 2.15x slower
31
- bin/bench_n 50000: 200520.6 i/s - 3.92x slower
32
- bin/bench_n 100000: 88607.0 i/s - 8.87x slower
33
- bin/bench_n 250000: 34530.5 i/s - 22.77x slower
34
- bin/bench_n 500000: 17965.4 i/s - 43.77x slower
35
- bin/bench_n 1000000: 5638.7 i/s - 139.45x slower
36
- bin/bench_n 2500000: 1302.0 i/s - 603.93x slower
37
- bin/bench_n 5000000: 592.0 i/s - 1328.25x slower
38
- bin/bench_n 10000000: 288.8 i/s - 2722.66x slower
35
+ N 10: 3931408.4 i/s
36
+ N 32: 3213952.9 i/s - 1.22x slower
37
+ N 100: 2904181.8 i/s - 1.35x slower
38
+ N 316: 2396374.2 i/s - 1.64x slower
39
+ N 1000: 2203157.1 i/s - 1.78x slower
40
+ N 3162: 1829352.1 i/s - 2.15x slower
41
+ N 10000: 1209584.9 i/s - 3.25x slower
42
+ N 31623: 412392.2 i/s - 9.53x slower
43
+ N 100000: 81121.4 i/s - 48.46x slower
44
+ N 316228: 26362.1 i/s - 149.13x slower
45
+ N 1000000: 5356.0 i/s - 734.02x slower
46
+ N 3162278: 972.0 i/s - 4044.84x slower
47
+ N 10000000: 281.9 i/s - 13946.33x slower
39
48
 
40
49
  push + pop (rb_heap)
41
- bin/bench_n 10000: 736618.2 i/s
42
- bin/bench_n 25000: 670186.8 i/s - 1.10x slower
43
- bin/bench_n 50000: 618156.7 i/s - 1.19x slower
44
- bin/bench_n 100000: 579250.7 i/s - 1.27x slower
45
- bin/bench_n 250000: 572795.0 i/s - 1.29x slower
46
- bin/bench_n 500000: 543648.3 i/s - 1.35x slower
47
- bin/bench_n 1000000: 513523.4 i/s - 1.43x slower
48
- bin/bench_n 2500000: 460848.9 i/s - 1.60x slower
49
- bin/bench_n 5000000: 445234.5 i/s - 1.65x slower
50
- bin/bench_n 10000000: 423119.0 i/s - 1.74x slower
50
+ N 10: 2325816.5 i/s
51
+ N 32: 1857033.5 i/s - 1.25x slower
52
+ N 100: 1603540.3 i/s - 1.45x slower
53
+ N 316: 1356156.9 i/s - 1.72x slower
54
+ N 1000: 1262515.2 i/s - 1.84x slower
55
+ N 3162: 1061785.1 i/s - 2.19x slower
56
+ N 10000: 950389.3 i/s - 2.45x slower
57
+ N 31623: 943118.5 i/s - 2.47x slower
58
+ N 100000: 732548.8 i/s - 3.17x slower
59
+ N 316228: 718418.6 i/s - 3.24x slower
60
+ N 1000000: 673577.8 i/s - 3.45x slower
61
+ N 10000000: 467512.3 i/s - 4.97x slower
62
+ N 3162278: 465935.8 i/s - 4.99x slower
51
63
 
52
64
  push + pop (c++ stl)
53
- bin/bench_n 10000: 4901711.5 i/s
54
- bin/bench_n 25000: 4793735.8 i/s - 1.02x slower
55
- bin/bench_n 50000: 4531675.9 i/s - 1.08x slower
56
- bin/bench_n 100000: 4315657.8 i/s - 1.14x slower
57
- bin/bench_n 250000: 4204141.1 i/s - 1.17x slower
58
- bin/bench_n 500000: 3902748.9 i/s - 1.26x slower
59
- bin/bench_n 1000000: 3395620.2 i/s - 1.44x slower
60
- bin/bench_n 2500000: 2659274.8 i/s - 1.84x slower
61
- bin/bench_n 5000000: 2346630.0 i/s - 2.09x slower
62
- bin/bench_n 10000000: 2022304.5 i/s - 2.42x slower
65
+ N 32: 7771751.1 i/s
66
+ N 10: 7706818.6 i/s - 1.01x slower
67
+ N 100: 7393127.3 i/s - 1.05x slower
68
+ N 316: 7083991.6 i/s - 1.10x slower
69
+ N 1000: 6898781.3 i/s - 1.13x slower
70
+ N 3162: 6319035.6 i/s - 1.23x slower
71
+ N 10000: 5731130.5 i/s - 1.36x slower
72
+ N 31623: 5502665.3 i/s - 1.41x slower
73
+ N 100000: 4842393.2 i/s - 1.60x slower
74
+ N 316228: 4401947.6 i/s - 1.77x slower
75
+ N 1000000: 4170936.4 i/s - 1.86x slower
76
+ N 3162278: 3458169.7 i/s - 2.25x slower
77
+ N 10000000: 2737146.6 i/s - 2.84x slower
63
78
 
64
79
  push + pop (c_dheap)
65
- bin/bench_n 10000: 7311366.6 i/s
66
- bin/bench_n 50000: 6737824.5 i/s - 1.09x slower
67
- bin/bench_n 25000: 6407340.6 i/s - 1.14x slower
68
- bin/bench_n 100000: 6254396.3 i/s - 1.17x slower
69
- bin/bench_n 250000: 5917684.5 i/s - 1.24x slower
70
- bin/bench_n 500000: 5126307.6 i/s - 1.43x slower
71
- bin/bench_n 1000000: 4403494.1 i/s - 1.66x slower
72
- bin/bench_n 2500000: 3304088.2 i/s - 2.21x slower
73
- bin/bench_n 5000000: 2664897.7 i/s - 2.74x slower
74
- bin/bench_n 10000000: 2137927.6 i/s - 3.42x slower
80
+ N 10: 10196454.1 i/s
81
+ N 32: 9920533.6 i/s - 1.03x slower
82
+ N 316: 9688419.5 i/s - 1.05x slower
83
+ N 100: 9668679.8 i/s - 1.05x slower
84
+ N 1000: 9339557.0 i/s - 1.09x slower
85
+ N 3162: 8703782.7 i/s - 1.17x slower
86
+ N 10000: 8045103.0 i/s - 1.27x slower
87
+ N 31623: 7670445.6 i/s - 1.33x slower
88
+ N 316228: 7280432.6 i/s - 1.40x slower
89
+ N 100000: 7150276.7 i/s - 1.43x slower
90
+ N 1000000: 6490261.6 i/s - 1.57x slower
91
+ N 3162278: 5230642.9 i/s - 1.95x slower
92
+ N 10000000: 3734856.5 i/s - 2.73x slower
75
93
 
data/docs/benchmarks.txt CHANGED
@@ -1,515 +1,686 @@
1
- Benchmarking run at 2021-01-17 17:17:24 -0500
2
- ruby v2.7.2, DHeap v0.5.0
1
+ Benchmarking run at 2021-01-31 08:31:50 -0500
2
+ ruby v2.7.2, DHeap v0.6.1
3
3
 
4
4
  ################################################################################
5
- # Benchmarks with N=5 (t=10sec/benchmark)
5
+ # Benchmarks with N=10
6
6
  ################################################################################
7
7
 
8
- == push N (N=5) ================================================================
9
- Warming up --------------------------------------
10
- push N (bsearch) 921.113k i/s - 1.862M times in 2.021033s (1.09μs/i)
11
- push N (rb_heap) 953.542k i/s - 1.933M times in 2.026956s (1.05μs/i)
12
- push N (c++ stl) 989.247k i/s - 2.038M times in 2.060495s (1.01μs/i)
13
- push N (c_dheap) 1.922M i/s - 3.928M times in 2.043907s (520.30ns/i)
8
+ == push N (N=10) ==============================================================
14
9
  Calculating -------------------------------------
15
- push N (bsearch) 921.060k i/s - 5.527M times in 6.000346s (1.09μs/i)
16
- push N (rb_heap) 928.435k i/s - 5.721M times in 6.162252s (1.08μs/i)
17
- push N (c++ stl) 1.050M i/s - 5.935M times in 5.654249s (952.62ns/i)
18
- push N (c_dheap) 1.970M i/s - 11.532M times in 5.854595s (507.69ns/i)
10
+ push N (findmin) 9.717M i/s - 30.000M times in 3.087359s (102.91ns/i, 254clocks/i)
11
+ push N (bsearch) 4.320M i/s - 600.000k times in 0.138891s (231.49ns/i, 496clocks/i)
12
+ push N (rb_heap) 5.404M i/s - 12.000M times in 2.220663s (185.06ns/i, 422clocks/i)
13
+ push N (c++ stl) 6.378M i/s - 18.000M times in 2.822057s (156.78ns/i, 395clocks/i)
14
+ push N (c_dheap) 10.371M i/s - 30.000M times in 2.892808s (96.43ns/i, 273clocks/i)
19
15
 
20
16
  Comparison:
21
- push N (c_dheap): 1969700.7 i/s
22
- push N (c++ stl): 1049738.1 i/s - 1.88x slower
23
- push N (rb_heap): 928435.2 i/s - 2.12x slower
24
- push N (bsearch): 921060.0 i/s - 2.14x slower
17
+ push N (c_dheap): 10370547.5 i/s
18
+ push N (findmin): 9717043.7 i/s - 1.07x slower
19
+ push N (c++ stl): 6378325.6 i/s - 1.63x slower
20
+ push N (rb_heap): 5403792.2 i/s - 1.92x slower
21
+ push N (bsearch): 4319927.8 i/s - 2.40x slower
25
22
 
26
- == push N then pop N (N=5) ====================================================
27
- Warming up --------------------------------------
28
- push N + pop N (findmin) 812.905k i/s - 1.645M times in 2.023946s (1.23μs/i)
29
- push N + pop N (bsearch) 756.655k i/s - 1.537M times in 2.031407s (1.32μs/i)
30
- push N + pop N (rb_heap) 505.268k i/s - 1.051M times in 2.079579s (1.98μs/i)
31
- push N + pop N (c++ stl) 1.159M i/s - 2.358M times in 2.035009s (863.13ns/i)
32
- push N + pop N (c_dheap) 1.425M i/s - 2.889M times in 2.028016s (701.91ns/i)
33
- Calculating -------------------------------------
34
- push N + pop N (findmin) 862.913k i/s - 4.877M times in 5.652280s (1.16μs/i)
35
- push N + pop N (bsearch) 762.887k i/s - 4.540M times in 5.950988s (1.31μs/i)
36
- push N + pop N (rb_heap) 506.890k i/s - 3.032M times in 5.980790s (1.97μs/i)
37
- push N + pop N (c++ stl) 1.135M i/s - 6.951M times in 6.124666s (881.06ns/i)
38
- push N + pop N (c_dheap) 1.376M i/s - 8.548M times in 6.213139s (726.85ns/i)
39
-
40
- Comparison:
41
- push N + pop N (c_dheap): 1375805.0 i/s
42
- push N + pop N (c++ stl): 1134997.5 i/s - 1.21x slower
43
- push N + pop N (findmin): 862913.1 i/s - 1.59x slower
44
- push N + pop N (bsearch): 762887.1 i/s - 1.80x slower
45
- push N + pop N (rb_heap): 506890.4 i/s - 2.71x slower
46
-
47
- == Push/pop with pre-filled queue (size=N) (N=5) ==============================
23
+ == push N then pop N (N=10) ====================================================
24
+ Calculating -------------------------------------
25
+ push N + pop N (findmin) 7.721M i/s - 300.000k times in 0.038854s (129.51ns/i, 377clocks/i)
26
+ push N + pop N (bsearch) 6.780M i/s - 1.200M times in 0.177001s (147.50ns/i, 401clocks/i)
27
+ push N + pop N (rb_heap) 4.231M i/s - 6.000M times in 1.418156s (236.36ns/i, 517clocks/i)
28
+ push N + pop N (c++ stl) 10.608M i/s - 18.000M times in 1.696896s (94.27ns/i, 214clocks/i)
29
+ push N + pop N (c_dheap) 12.916M i/s - 18.000M times in 1.393570s (77.42ns/i, 136clocks/i)
30
+
31
+ Comparison:
32
+ push N + pop N (c_dheap): 12916469.1 i/s
33
+ push N + pop N (c++ stl): 10607602.3 i/s - 1.22x slower
34
+ push N + pop N (findmin): 7721268.8 i/s - 1.67x slower
35
+ push N + pop N (bsearch): 6779608.4 i/s - 1.91x slower
36
+ push N + pop N (rb_heap): 4230845.4 i/s - 3.05x slower
37
+
38
+ == Push/pop with pre-filled queue (size=N) (N=10) ==============================
48
39
  Warming up --------------------------------------
49
- push + pop (findmin) 5.115M i/s - 10.399M times in 2.033134s (195.52ns/i, 504clocks/i)
50
- push + pop (bsearch) 4.203M i/s - 8.569M times in 2.038788s (237.92ns/i, 627clocks/i)
51
- push + pop (rb_heap) 2.362M i/s - 4.760M times in 2.014718s (423.30ns/i)
52
- push + pop (c++ stl) 6.881M i/s - 13.910M times in 2.021416s (145.32ns/i, 269clocks/i)
53
- push + pop (c_dheap) 8.354M i/s - 16.814M times in 2.012796s (119.71ns/i, 343clocks/i)
40
+ push + pop (findmin) 5.119M i/s - 5.238M times in 1.023417s (195.37ns/i, 458clocks/i)
41
+ push + pop (bsearch) 3.791M i/s - 3.940M times in 1.039431s (263.79ns/i, 510clocks/i)
42
+ push + pop (rb_heap) 2.312M i/s - 2.376M times in 1.027837s (432.61ns/i)
43
+ push + pop (c++ stl) 7.247M i/s - 7.344M times in 1.013381s (137.99ns/i, 366clocks/i)
44
+ push + pop (c_dheap) 8.918M i/s - 9.151M times in 1.026085s (112.13ns/i, 223clocks/i)
54
45
  Calculating -------------------------------------
55
- push + pop (findmin) 5.026M i/s - 30.687M times in 6.105509s (198.96ns/i, 532clocks/i)
56
- push + pop (bsearch) 4.300M i/s - 25.219M times in 5.864447s (232.54ns/i, 607clocks/i)
57
- push + pop (rb_heap) 2.299M i/s - 14.174M times in 6.164105s (434.88ns/i)
58
- push + pop (c++ stl) 7.535M i/s - 41.288M times in 5.479760s (132.72ns/i, 350clocks/i)
59
- push + pop (c_dheap) 9.044M i/s - 50.122M times in 5.541698s (110.57ns/i, 241clocks/i)
46
+ push + pop (findmin) 5.413M i/s - 15.356M times in 2.837024s (184.75ns/i, 534clocks/i)
47
+ push + pop (bsearch) 3.971M i/s - 11.373M times in 2.863579s (251.80ns/i, 604clocks/i)
48
+ push + pop (rb_heap) 2.296M i/s - 6.935M times in 3.020761s (435.61ns/i, 951clocks/i)
49
+ push + pop (c++ stl) 7.823M i/s - 21.741M times in 2.778978s (127.82ns/i, 282clocks/i)
50
+ push + pop (c_dheap) 9.854M i/s - 26.755M times in 2.715009s (101.48ns/i, 243clocks/i)
60
51
 
61
52
  Comparison:
62
- push + pop (c_dheap): 9044435.5 i/s
63
- push + pop (c++ stl): 7534583.4 i/s - 1.20x slower
64
- push + pop (findmin): 5026155.1 i/s - 1.80x slower
65
- push + pop (bsearch): 4300260.0 i/s - 2.10x slower
66
- push + pop (rb_heap): 2299499.7 i/s - 3.93x slower
53
+ push + pop (c_dheap): 9854472.6 i/s
54
+ push + pop (c++ stl): 7823282.4 i/s - 1.26x slower
55
+ push + pop (findmin): 5412632.1 i/s - 1.82x slower
56
+ push + pop (bsearch): 3971475.8 i/s - 2.48x slower
57
+ push + pop (rb_heap): 2295653.2 i/s - 4.29x slower
67
58
 
68
59
  ################################################################################
69
- # Benchmarks with N=21 (t=10sec/benchmark)
60
+ # Benchmarks with N=30
70
61
  ################################################################################
71
62
 
72
- == push N (N=21) ==============================================================
73
- Warming up --------------------------------------
74
- push N (bsearch) 172.478k i/s - 359.942k times in 2.086881s (5.80μs/i)
75
- push N (rb_heap) 206.237k i/s - 426.074k times in 2.065940s (4.85μs/i)
76
- push N (c++ stl) 317.575k i/s - 652.828k times in 2.055665s (3.15μs/i)
77
- push N (c_dheap) 488.947k i/s - 991.484k times in 2.027793s (2.05μs/i)
63
+ == push N (N=30) ==============================================================
78
64
  Calculating -------------------------------------
79
- push N (bsearch) 168.679k i/s - 1.035M times in 6.135155s (5.93μs/i)
80
- push N (rb_heap) 202.804k i/s - 1.237M times in 6.101584s (4.93μs/i)
81
- push N (c++ stl) 305.547k i/s - 1.905M times in 6.236198s (3.27μs/i)
82
- push N (c_dheap) 464.231k i/s - 2.934M times in 6.319441s (2.15μs/i)
65
+ push N (findmin) 10.040M i/s - 30.000M times in 2.987977s (99.60ns/i, 198clocks/i)
66
+ push N (bsearch) 3.544M i/s - 600.000k times in 0.169307s (282.18ns/i, 757clocks/i)
67
+ push N (rb_heap) 5.017M i/s - 12.000M times in 2.391690s (199.31ns/i, 471clocks/i)
68
+ push N (c++ stl) 7.401M i/s - 18.000M times in 2.432254s (135.13ns/i, 282clocks/i)
69
+ push N (c_dheap) 10.496M i/s - 30.000M times in 2.858330s (95.28ns/i, 207clocks/i)
83
70
 
84
71
  Comparison:
85
- push N (c_dheap): 464231.4 i/s
86
- push N (c++ stl): 305546.7 i/s - 1.52x slower
87
- push N (rb_heap): 202803.7 i/s - 2.29x slower
88
- push N (bsearch): 168678.7 i/s - 2.75x slower
72
+ push N (c_dheap): 10495639.7 i/s
73
+ push N (findmin): 10040237.6 i/s - 1.05x slower
74
+ push N (c++ stl): 7400542.2 i/s - 1.42x slower
75
+ push N (rb_heap): 5017372.7 i/s - 2.09x slower
76
+ push N (bsearch): 3543867.6 i/s - 2.96x slower
89
77
 
90
- == push N then pop N (N=21) ====================================================
91
- Warming up --------------------------------------
92
- push N + pop N (findmin) 160.307k i/s - 331.191k times in 2.065978s (6.24μs/i)
93
- push N + pop N (bsearch) 136.665k i/s - 280.830k times in 2.054882s (7.32μs/i)
94
- push N + pop N (rb_heap) 77.997k i/s - 156.492k times in 2.006388s (12.82μs/i)
95
- push N + pop N (c++ stl) 243.819k i/s - 489.279k times in 2.006731s (4.10μs/i)
96
- push N + pop N (c_dheap) 295.254k i/s - 597.410k times in 2.023373s (3.39μs/i)
97
- Calculating -------------------------------------
98
- push N + pop N (findmin) 161.999k i/s - 961.842k times in 5.937343s (6.17μs/i)
99
- push N + pop N (bsearch) 143.432k i/s - 819.988k times in 5.716901s (6.97μs/i)
100
- push N + pop N (rb_heap) 79.622k i/s - 467.981k times in 5.877529s (12.56μs/i)
101
- push N + pop N (c++ stl) 252.227k i/s - 1.463M times in 5.799983s (3.96μs/i)
102
- push N + pop N (c_dheap) 298.350k i/s - 1.772M times in 5.937739s (3.35μs/i)
103
-
104
- Comparison:
105
- push N + pop N (c_dheap): 298350.3 i/s
106
- push N + pop N (c++ stl): 252227.1 i/s - 1.18x slower
107
- push N + pop N (findmin): 161998.7 i/s - 1.84x slower
108
- push N + pop N (bsearch): 143432.3 i/s - 2.08x slower
109
- push N + pop N (rb_heap): 79622.1 i/s - 3.75x slower
110
-
111
- == Push/pop with pre-filled queue (size=N) (N=21) ==============================
112
- Warming up --------------------------------------
113
- push + pop (findmin) 4.383M i/s - 8.832M times in 2.014937s (228.13ns/i, 482clocks/i)
114
- push + pop (bsearch) 3.357M i/s - 6.859M times in 2.042965s (297.84ns/i, 709clocks/i)
115
- push + pop (rb_heap) 1.885M i/s - 3.852M times in 2.043333s (530.48ns/i, 698clocks/i)
116
- push + pop (c++ stl) 6.362M i/s - 12.844M times in 2.018810s (157.18ns/i, 438clocks/i)
117
- push + pop (c_dheap) 7.644M i/s - 15.337M times in 2.006451s (130.83ns/i, 350clocks/i)
78
+ == push N then pop N (N=30) ====================================================
118
79
  Calculating -------------------------------------
119
- push + pop (findmin) 4.543M i/s - 26.301M times in 5.789445s (220.12ns/i, 618clocks/i)
120
- push + pop (bsearch) 3.462M i/s - 20.145M times in 5.819157s (288.87ns/i, 721clocks/i)
121
- push + pop (rb_heap) 1.845M i/s - 11.310M times in 6.128707s (541.86ns/i)
122
- push + pop (c++ stl) 7.223M i/s - 38.172M times in 5.284687s (138.45ns/i, 383clocks/i)
123
- push + pop (c_dheap) 8.855M i/s - 45.863M times in 5.179255s (112.93ns/i, 331clocks/i)
80
+ push N + pop N (findmin) 6.343M i/s - 300.000k times in 0.047296s (157.65ns/i, 353clocks/i)
81
+ push N + pop N (bsearch) 5.591M i/s - 1.200M times in 0.214624s (178.85ns/i, 332clocks/i)
82
+ push N + pop N (rb_heap) 3.162M i/s - 6.000M times in 1.897529s (316.25ns/i, 812clocks/i)
83
+ push N + pop N (c++ stl) 10.068M i/s - 18.000M times in 1.787868s (99.33ns/i, 203clocks/i)
84
+ push N + pop N (c_dheap) 11.903M i/s - 18.000M times in 1.512286s (84.02ns/i, 238clocks/i)
124
85
 
125
86
  Comparison:
126
- push + pop (c_dheap): 8855093.4 i/s
127
- push + pop (c++ stl): 7223079.5 i/s - 1.23x slower
128
- push + pop (findmin): 4542913.7 i/s - 1.95x slower
129
- push + pop (bsearch): 3461802.4 i/s - 2.56x slower
130
- push + pop (rb_heap): 1845488.7 i/s - 4.80x slower
87
+ push N + pop N (c_dheap): 11902512.2 i/s
88
+ push N + pop N (c++ stl): 10067858.5 i/s - 1.18x slower
89
+ push N + pop N (findmin): 6343031.3 i/s - 1.88x slower
90
+ push N + pop N (bsearch): 5591174.8 i/s - 2.13x slower
91
+ push N + pop N (rb_heap): 3162007.3 i/s - 3.76x slower
131
92
 
132
93
  ################################################################################
133
- # Benchmarks with N=85 (t=10sec/benchmark)
94
+ # Benchmarks with N=32
134
95
  ################################################################################
135
96
 
136
- == push N (N=85) ==============================================================
97
+ == Push/pop with pre-filled queue (size=N) (N=32) ==============================
137
98
  Warming up --------------------------------------
138
- push N (bsearch) 33.725k i/s - 70.434k times in 2.088480s (29.65μs/i)
139
- push N (rb_heap) 48.257k i/s - 97.041k times in 2.010935s (20.72μs/i)
140
- push N (c++ stl) 89.473k i/s - 179.991k times in 2.011685s (11.18μs/i)
141
- push N (c_dheap) 113.625k i/s - 229.362k times in 2.018582s (8.80μs/i)
99
+ push + pop (findmin) 4.146M i/s - 4.168M times in 1.005262s (241.19ns/i, 574clocks/i)
100
+ push + pop (bsearch) 3.067M i/s - 3.218M times in 1.049417s (326.09ns/i, 940clocks/i)
101
+ push + pop (rb_heap) 1.849M i/s - 1.915M times in 1.036008s (540.96ns/i)
102
+ push + pop (c++ stl) 6.561M i/s - 6.661M times in 1.015169s (152.40ns/i, 278clocks/i)
103
+ push + pop (c_dheap) 8.786M i/s - 9.051M times in 1.030185s (113.82ns/i, 258clocks/i)
142
104
  Calculating -------------------------------------
143
- push N (bsearch) 32.896k i/s - 202.350k times in 6.151202s (30.40μs/i)
144
- push N (rb_heap) 45.078k i/s - 289.539k times in 6.423085s (22.18μs/i)
145
- push N (c++ stl) 90.436k i/s - 536.836k times in 5.936116s (11.06μs/i)
146
- push N (c_dheap) 115.218k i/s - 681.751k times in 5.917030s (8.68μs/i)
105
+ push + pop (findmin) 4.478M i/s - 12.438M times in 2.777667s (223.31ns/i, 487clocks/i)
106
+ push + pop (bsearch) 3.196M i/s - 9.200M times in 2.878768s (312.91ns/i, 813clocks/i)
107
+ push + pop (rb_heap) 1.796M i/s - 5.546M times in 3.087197s (556.68ns/i)
108
+ push + pop (c++ stl) 7.578M i/s - 19.684M times in 2.597487s (131.96ns/i, 282clocks/i)
109
+ push + pop (c_dheap) 9.929M i/s - 26.357M times in 2.654479s (100.71ns/i, 239clocks/i)
147
110
 
148
111
  Comparison:
149
- push N (c_dheap): 115218.4 i/s
150
- push N (c++ stl): 90435.6 i/s - 1.27x slower
151
- push N (rb_heap): 45077.9 i/s - 2.56x slower
152
- push N (bsearch): 32896.0 i/s - 3.50x slower
112
+ push + pop (c_dheap): 9929261.3 i/s
113
+ push + pop (c++ stl): 7578283.3 i/s - 1.31x slower
114
+ push + pop (findmin): 4477993.9 i/s - 2.22x slower
115
+ push + pop (bsearch): 3195760.4 i/s - 3.11x slower
116
+ push + pop (rb_heap): 1796358.4 i/s - 5.53x slower
153
117
 
154
- == push N then pop N (N=85) ====================================================
155
- Warming up --------------------------------------
156
- push N + pop N (findmin) 28.014k i/s - 57.855k times in 2.065181s (35.70μs/i)
157
- push N + pop N (bsearch) 28.759k i/s - 59.829k times in 2.080345s (34.77μs/i)
158
- push N + pop N (rb_heap) 14.748k i/s - 29.500k times in 2.000302s (67.81μs/i)
159
- push N + pop N (c++ stl) 58.058k i/s - 117.831k times in 2.029553s (17.22μs/i)
160
- push N + pop N (c_dheap) 67.639k i/s - 139.587k times in 2.063705s (14.78μs/i)
161
- Calculating -------------------------------------
162
- push N + pop N (findmin) 27.713k i/s - 168.086k times in 6.065197s (36.08μs/i)
163
- push N + pop N (bsearch) 29.110k i/s - 172.554k times in 5.927752s (34.35μs/i)
164
- push N + pop N (rb_heap) 14.908k i/s - 88.486k times in 5.935373s (67.08μs/i)
165
- push N + pop N (c++ stl) 54.774k i/s - 348.345k times in 6.359716s (18.26μs/i)
166
- push N + pop N (c_dheap) 68.487k i/s - 405.834k times in 5.925729s (14.60μs/i)
167
-
168
- Comparison:
169
- push N + pop N (c_dheap): 68486.8 i/s
170
- push N + pop N (c++ stl): 54773.7 i/s - 1.25x slower
171
- push N + pop N (bsearch): 29109.5 i/s - 2.35x slower
172
- push N + pop N (findmin): 27713.2 i/s - 2.47x slower
173
- push N + pop N (rb_heap): 14908.2 i/s - 4.59x slower
174
-
175
- == Push/pop with pre-filled queue (size=N) (N=85) ==============================
118
+ ################################################################################
119
+ # Benchmarks with N=100
120
+ ################################################################################
121
+
122
+ == push N (N=100) ==============================================================
123
+ Calculating -------------------------------------
124
+ push N (findmin) 9.981M i/s - 30.000M times in 3.005825s (100.19ns/i, 288clocks/i)
125
+ push N (bsearch) 2.769M i/s - 600.000k times in 0.216676s (361.13ns/i, 855clocks/i)
126
+ push N (rb_heap) 4.608M i/s - 12.000M times in 2.604252s (217.02ns/i, 522clocks/i)
127
+ push N (c++ stl) 7.992M i/s - 18.000M times in 2.252363s (125.13ns/i, 314clocks/i)
128
+ push N (c_dheap) 10.523M i/s - 30.000M times in 2.850989s (95.03ns/i, 246clocks/i)
129
+
130
+ Comparison:
131
+ push N (c_dheap): 10522662.6 i/s
132
+ push N (findmin): 9980622.3 i/s - 1.05x slower
133
+ push N (c++ stl): 7991608.3 i/s - 1.32x slower
134
+ push N (rb_heap): 4607849.4 i/s - 2.28x slower
135
+ push N (bsearch): 2769106.2 i/s - 3.80x slower
136
+
137
+ == push N then pop N (N=100) ==================================================
138
+ Calculating -------------------------------------
139
+ push N + pop N (findmin) 4.321M i/s - 300.000k times in 0.069422s (231.41ns/i, 481clocks/i)
140
+ push N + pop N (bsearch) 4.809M i/s - 1.200M times in 0.249544s (207.95ns/i, 525clocks/i)
141
+ push N + pop N (rb_heap) 2.467M i/s - 6.000M times in 2.431693s (405.28ns/i)
142
+ push N + pop N (c++ stl) 9.317M i/s - 18.000M times in 1.931923s (107.33ns/i, 258clocks/i)
143
+ push N + pop N (c_dheap) 10.954M i/s - 18.000M times in 1.643165s (91.29ns/i, 262clocks/i)
144
+
145
+ Comparison:
146
+ push N + pop N (c_dheap): 10954469.2 i/s
147
+ push N + pop N (c++ stl): 9317140.2 i/s - 1.18x slower
148
+ push N + pop N (bsearch): 4808770.2 i/s - 2.28x slower
149
+ push N + pop N (findmin): 4321411.9 i/s - 2.53x slower
150
+ push N + pop N (rb_heap): 2467417.0 i/s - 4.44x slower
151
+
152
+ == Push/pop with pre-filled queue (size=N) (N=100) ============================
176
153
  Warming up --------------------------------------
177
- push + pop (findmin) 3.148M i/s - 6.329M times in 2.010240s (317.64ns/i, 872clocks/i)
178
- push + pop (bsearch) 2.616M i/s - 5.241M times in 2.003260s (382.20ns/i)
179
- push + pop (rb_heap) 1.537M i/s - 3.126M times in 2.033793s (650.57ns/i)
180
- push + pop (c++ stl) 6.648M i/s - 13.314M times in 2.002850s (150.43ns/i, 396clocks/i)
181
- push + pop (c_dheap) 7.902M i/s - 15.885M times in 2.010277s (126.55ns/i, 282clocks/i)
154
+ push + pop (findmin) 3.032M i/s - 3.085M times in 1.017682s (329.84ns/i, 793clocks/i)
155
+ push + pop (bsearch) 2.602M i/s - 2.672M times in 1.026732s (384.28ns/i, 759clocks/i)
156
+ push + pop (rb_heap) 1.551M i/s - 1.609M times in 1.038011s (644.94ns/i)
157
+ push + pop (c++ stl) 6.826M i/s - 6.861M times in 1.005153s (146.49ns/i, 427clocks/i)
158
+ push + pop (c_dheap) 8.588M i/s - 8.702M times in 1.013307s (116.44ns/i, 247clocks/i)
182
159
  Calculating -------------------------------------
183
- push + pop (findmin) 3.327M i/s - 18.889M times in 5.677677s (300.58ns/i, 809clocks/i)
184
- push + pop (bsearch) 2.827M i/s - 15.699M times in 5.553113s (353.73ns/i, 891clocks/i)
185
- push + pop (rb_heap) 1.465M i/s - 9.223M times in 6.293793s (682.42ns/i)
186
- push + pop (c++ stl) 7.057M i/s - 39.885M times in 5.651789s (141.70ns/i, 418clocks/i)
187
- push + pop (c_dheap) 8.422M i/s - 47.412M times in 5.629438s (118.73ns/i, 281clocks/i)
160
+ push + pop (findmin) 3.149M i/s - 9.095M times in 2.887963s (317.52ns/i, 768clocks/i)
161
+ push + pop (bsearch) 2.854M i/s - 7.807M times in 2.735737s (350.43ns/i, 720clocks/i)
162
+ push + pop (rb_heap) 1.571M i/s - 4.652M times in 2.960926s (636.54ns/i)
163
+ push + pop (c++ stl) 7.579M i/s - 20.479M times in 2.702015s (131.94ns/i, 331clocks/i)
164
+ push + pop (c_dheap) 9.567M i/s - 25.765M times in 2.693102s (104.53ns/i, 210clocks/i)
188
165
 
189
166
  Comparison:
190
- push + pop (c_dheap): 8422216.3 i/s
191
- push + pop (c++ stl): 7057057.1 i/s - 1.19x slower
192
- push + pop (findmin): 3326922.6 i/s - 2.53x slower
193
- push + pop (bsearch): 2827025.2 i/s - 2.98x slower
194
- push + pop (rb_heap): 1465369.7 i/s - 5.75x slower
167
+ push + pop (c_dheap): 9566872.5 i/s
168
+ push + pop (c++ stl): 7579103.1 i/s - 1.26x slower
169
+ push + pop (findmin): 3149419.4 i/s - 3.04x slower
170
+ push + pop (bsearch): 2853617.8 i/s - 3.35x slower
171
+ push + pop (rb_heap): 1570998.7 i/s - 6.09x slower
195
172
 
196
173
  ################################################################################
197
- # Benchmarks with N=341 (t=10sec/benchmark)
174
+ # Benchmarks with N=300
198
175
  ################################################################################
199
176
 
200
- == push N (N=341) ==============================================================
201
- Warming up --------------------------------------
202
- push N (bsearch) 6.761k i/s - 13.860k times in 2.049946s (147.90μs/i)
203
- push N (rb_heap) 11.284k i/s - 23.040k times in 2.041838s (88.62μs/i)
204
- push N (c++ stl) 23.839k i/s - 49.266k times in 2.066605s (41.95μs/i)
205
- push N (c_dheap) 30.654k i/s - 63.420k times in 2.068901s (32.62μs/i)
177
+ == push N (N=300) ==============================================================
206
178
  Calculating -------------------------------------
207
- push N (bsearch) 6.624k i/s - 40.566k times in 6.123861s (150.96μs/i)
208
- push N (rb_heap) 11.433k i/s - 67.703k times in 5.921638s (87.46μs/i)
209
- push N (c++ stl) 23.055k i/s - 143.034k times in 6.204083s (43.37μs/i)
210
- push N (c_dheap) 27.951k i/s - 183.923k times in 6.580153s (35.78μs/i)
179
+ push N (findmin) 10.204M i/s - 30.000M times in 2.940004s (98.00ns/i, 159clocks/i)
180
+ push N (bsearch) 2.360M i/s - 600.000k times in 0.254221s (423.70ns/i, 935clocks/i)
181
+ push N (rb_heap) 4.463M i/s - 12.000M times in 2.689036s (224.09ns/i, 530clocks/i)
182
+ push N (c++ stl) 8.204M i/s - 18.000M times in 2.193957s (121.89ns/i, 356clocks/i)
183
+ push N (c_dheap) 10.554M i/s - 30.000M times in 2.842477s (94.75ns/i, 276clocks/i)
211
184
 
212
185
  Comparison:
213
- push N (c_dheap): 27951.2 i/s
214
- push N (c++ stl): 23054.8 i/s - 1.21x slower
215
- push N (rb_heap): 11433.2 i/s - 2.44x slower
216
- push N (bsearch): 6624.3 i/s - 4.22x slower
186
+ push N (c_dheap): 10554176.5 i/s
187
+ push N (findmin): 10204068.1 i/s - 1.03x slower
188
+ push N (c++ stl): 8204354.5 i/s - 1.29x slower
189
+ push N (rb_heap): 4462566.4 i/s - 2.37x slower
190
+ push N (bsearch): 2360150.2 i/s - 4.47x slower
217
191
 
218
- == push N then pop N (N=341) ==================================================
219
- Warming up --------------------------------------
220
- push N + pop N (findmin) 3.013k i/s - 6.040k times in 2.004514s (331.87μs/i)
221
- push N + pop N (bsearch) 6.202k i/s - 12.684k times in 2.045306s (161.25μs/i)
222
- push N + pop N (rb_heap) 3.028k i/s - 6.100k times in 2.014435s (330.24μs/i)
223
- push N + pop N (c++ stl) 13.177k i/s - 27.006k times in 2.049544s (75.89μs/i)
224
- push N + pop N (c_dheap) 15.142k i/s - 31.563k times in 2.084497s (66.04μs/i)
225
- Calculating -------------------------------------
226
- push N + pop N (findmin) 3.025k i/s - 18.079k times in 5.976274s (330.56μs/i)
227
- push N + pop N (bsearch) 5.906k i/s - 37.209k times in 6.300596s (169.33μs/i)
228
- push N + pop N (rb_heap) 3.008k i/s - 18.168k times in 6.039305s (332.41μs/i)
229
- push N + pop N (c++ stl) 13.135k i/s - 79.059k times in 6.018814s (76.13μs/i)
230
- push N + pop N (c_dheap) 15.142k i/s - 90.850k times in 5.999735s (66.04μs/i)
231
-
232
- Comparison:
233
- push N + pop N (c_dheap): 15142.3 i/s
234
- push N + pop N (c++ stl): 13135.3 i/s - 1.15x slower
235
- push N + pop N (bsearch): 5905.6 i/s - 2.56x slower
236
- push N + pop N (findmin): 3025.1 i/s - 5.01x slower
237
- push N + pop N (rb_heap): 3008.3 i/s - 5.03x slower
238
-
239
- == Push/pop with pre-filled queue (size=N) (N=341) ============================
240
- Warming up --------------------------------------
241
- push + pop (findmin) 1.508M i/s - 3.048M times in 2.020819s (662.94ns/i)
242
- push + pop (bsearch) 2.149M i/s - 4.337M times in 2.017794s (465.25ns/i)
243
- push + pop (rb_heap) 1.144M i/s - 2.313M times in 2.021027s (873.78ns/i)
244
- push + pop (c++ stl) 5.897M i/s - 11.981M times in 2.031688s (169.57ns/i, 484clocks/i)
245
- push + pop (c_dheap) 7.452M i/s - 14.981M times in 2.010401s (134.20ns/i, 367clocks/i)
192
+ == push N then pop N (N=300) ==================================================
246
193
  Calculating -------------------------------------
247
- push + pop (findmin) 1.548M i/s - 9.051M times in 5.844950s (645.81ns/i)
248
- push + pop (bsearch) 2.257M i/s - 12.896M times in 5.713856s (443.06ns/i)
249
- push + pop (rb_heap) 1.220M i/s - 6.867M times in 5.628146s (819.63ns/i)
250
- push + pop (c++ stl) 6.578M i/s - 35.384M times in 5.379298s (152.03ns/i, 399clocks/i)
251
- push + pop (c_dheap) 8.225M i/s - 44.711M times in 5.435966s (121.58ns/i, 327clocks/i)
194
+ push N + pop N (findmin) 2.307M i/s - 300.000k times in 0.130056s (433.52ns/i, 903clocks/i)
195
+ push N + pop N (bsearch) 4.125M i/s - 1.200M times in 0.290889s (242.41ns/i, 593clocks/i)
196
+ push N + pop N (rb_heap) 2.101M i/s - 6.000M times in 2.855417s (475.90ns/i, 844clocks/i)
197
+ push N + pop N (c++ stl) 8.707M i/s - 18.000M times in 2.067240s (114.85ns/i, 318clocks/i)
198
+ push N + pop N (c_dheap) 10.261M i/s - 18.000M times in 1.754140s (97.45ns/i, 277clocks/i)
252
199
 
253
200
  Comparison:
254
- push + pop (c_dheap): 8225038.0 i/s
255
- push + pop (c++ stl): 6577756.8 i/s - 1.25x slower
256
- push + pop (bsearch): 2257028.3 i/s - 3.64x slower
257
- push + pop (findmin): 1548450.8 i/s - 5.31x slower
258
- push + pop (rb_heap): 1220067.2 i/s - 6.74x slower
201
+ push N + pop N (c_dheap): 10261436.2 i/s
202
+ push N + pop N (c++ stl): 8707262.9 i/s - 1.18x slower
203
+ push N + pop N (bsearch): 4125279.4 i/s - 2.49x slower
204
+ push N + pop N (findmin): 2306706.5 i/s - 4.45x slower
205
+ push N + pop N (rb_heap): 2101269.3 i/s - 4.88x slower
259
206
 
260
207
  ################################################################################
261
- # Benchmarks with N=1365 (t=10sec/benchmark)
208
+ # Benchmarks with N=316
262
209
  ################################################################################
263
210
 
264
- == push N (N=1365) ============================================================
211
+ == Push/pop with pre-filled queue (size=N) (N=316) ============================
265
212
  Warming up --------------------------------------
266
- push N (bsearch) 1.394k i/s - 2.898k times in 2.079633s (717.61μs/i)
267
- push N (rb_heap) 2.943k i/s - 5.920k times in 2.011565s (339.79μs/i)
268
- push N (c++ stl) 5.621k i/s - 11.676k times in 2.077224s (177.91μs/i)
269
- push N (c_dheap) 7.425k i/s - 15.582k times in 2.098509s (134.68μs/i)
213
+ push + pop (findmin) 1.627M i/s - 1.651M times in 1.014236s (614.50ns/i)
214
+ push + pop (bsearch) 2.260M i/s - 2.313M times in 1.023385s (442.46ns/i)
215
+ push + pop (rb_heap) 1.288M i/s - 1.347M times in 1.045779s (776.16ns/i)
216
+ push + pop (c++ stl) 6.086M i/s - 6.295M times in 1.034346s (164.31ns/i, 427clocks/i)
217
+ push + pop (c_dheap) 8.076M i/s - 8.226M times in 1.018582s (123.83ns/i, 324clocks/i)
270
218
  Calculating -------------------------------------
271
- push N (bsearch) 1.346k i/s - 8.361k times in 6.211667s (742.93μs/i)
272
- push N (rb_heap) 2.908k i/s - 17.657k times in 6.072601s (343.92μs/i)
273
- push N (c++ stl) 5.812k i/s - 33.725k times in 5.802474s (172.05μs/i)
274
- push N (c_dheap) 7.406k i/s - 44.551k times in 6.015756s (135.03μs/i)
219
+ push + pop (findmin) 1.668M i/s - 4.882M times in 2.926147s (599.37ns/i)
220
+ push + pop (bsearch) 2.345M i/s - 6.780M times in 2.891943s (426.52ns/i)
221
+ push + pop (rb_heap) 1.269M i/s - 3.865M times in 3.045697s (787.98ns/i)
222
+ push + pop (c++ stl) 6.870M i/s - 18.258M times in 2.657550s (145.55ns/i, 289clocks/i)
223
+ push + pop (c_dheap) 9.665M i/s - 24.227M times in 2.506716s (103.47ns/i, 221clocks/i)
275
224
 
276
225
  Comparison:
277
- push N (c_dheap): 7405.7 i/s
278
- push N (c++ stl): 5812.2 i/s - 1.27x slower
279
- push N (rb_heap): 2907.7 i/s - 2.55x slower
280
- push N (bsearch): 1346.0 i/s - 5.50x slower
226
+ push + pop (c_dheap): 9664758.0 i/s
227
+ push + pop (c++ stl): 6870377.3 i/s - 1.41x slower
228
+ push + pop (bsearch): 2344530.3 i/s - 4.12x slower
229
+ push + pop (findmin): 1668416.3 i/s - 5.79x slower
230
+ push + pop (rb_heap): 1269060.0 i/s - 7.62x slower
281
231
 
282
- == push N then pop N (N=1365) ==================================================
283
- Warming up --------------------------------------
284
- push N + pop N (findmin) 189.039 i/s - 380.000 times in 2.010168s (5.29ms/i)
285
- push N + pop N (bsearch) 1.275k i/s - 2.667k times in 2.091317s (784.15μs/i)
286
- push N + pop N (rb_heap) 629.327 i/s - 1.260k times in 2.002137s (1.59ms/i)
287
- push N + pop N (c++ stl) 3.083k i/s - 6.280k times in 2.036843s (324.34μs/i)
288
- push N + pop N (c_dheap) 3.434k i/s - 6.880k times in 2.003496s (291.21μs/i)
289
- Calculating -------------------------------------
290
- push N + pop N (findmin) 195.665 i/s - 1.134k times in 5.795620s (5.11ms/i)
291
- push N + pop N (bsearch) 1.177k i/s - 7.651k times in 6.501332s (849.74μs/i)
292
- push N + pop N (rb_heap) 624.066 i/s - 3.775k times in 6.049040s (1.60ms/i)
293
- push N + pop N (c++ stl) 3.105k i/s - 18.499k times in 5.958037s (322.07μs/i)
294
- push N + pop N (c_dheap) 3.475k i/s - 20.603k times in 5.928992s (287.77μs/i)
295
-
296
- Comparison:
297
- push N + pop N (c_dheap): 3475.0 i/s
298
- push N + pop N (c++ stl): 3104.9 i/s - 1.12x slower
299
- push N + pop N (bsearch): 1176.8 i/s - 2.95x slower
300
- push N + pop N (rb_heap): 624.1 i/s - 5.57x slower
301
- push N + pop N (findmin): 195.7 i/s - 17.76x slower
302
-
303
- == Push/pop with pre-filled queue (size=N) (N=1365) ============================
232
+ ################################################################################
233
+ # Benchmarks with N=1,000
234
+ ################################################################################
235
+
236
+ == push N (N=1000) ============================================================
237
+ Calculating -------------------------------------
238
+ push N (findmin) 10.267M i/s - 30.000M times in 2.921868s (97.40ns/i, 243clocks/i)
239
+ push N (bsearch) 2.000M i/s - 600.000k times in 0.300058s (500.10ns/i)
240
+ push N (rb_heap) 4.408M i/s - 12.000M times in 2.722517s (226.88ns/i, 488clocks/i)
241
+ push N (c++ stl) 8.171M i/s - 18.000M times in 2.202936s (122.39ns/i, 254clocks/i)
242
+ push N (c_dheap) 10.455M i/s - 30.000M times in 2.869530s (95.65ns/i, 224clocks/i)
243
+
244
+ Comparison:
245
+ push N (c_dheap): 10454672.5 i/s
246
+ push N (findmin): 10267402.5 i/s - 1.02x slower
247
+ push N (c++ stl): 8170912.6 i/s - 1.28x slower
248
+ push N (rb_heap): 4407685.6 i/s - 2.37x slower
249
+ push N (bsearch): 1999614.9 i/s - 5.23x slower
250
+
251
+ == push N then pop N (N=1000) ==================================================
252
+ Calculating -------------------------------------
253
+ push N + pop N (findmin) 735.090k i/s - 300.000k times in 0.408113s (1.36μs/i)
254
+ push N + pop N (bsearch) 3.587M i/s - 1.200M times in 0.334586s (278.82ns/i, 742clocks/i)
255
+ push N + pop N (rb_heap) 1.799M i/s - 6.000M times in 3.336039s (556.01ns/i)
256
+ push N + pop N (c++ stl) 8.115M i/s - 18.000M times in 2.218185s (123.23ns/i, 292clocks/i)
257
+ push N + pop N (c_dheap) 9.283M i/s - 18.000M times in 1.939036s (107.72ns/i, 253clocks/i)
258
+
259
+ Comparison:
260
+ push N + pop N (c_dheap): 9282962.9 i/s
261
+ push N + pop N (c++ stl): 8114741.7 i/s - 1.14x slower
262
+ push N + pop N (bsearch): 3586521.9 i/s - 2.59x slower
263
+ push N + pop N (rb_heap): 1798540.1 i/s - 5.16x slower
264
+ push N + pop N (findmin): 735090.3 i/s - 12.63x slower
265
+
266
+ == Push/pop with pre-filled queue (size=N) (N=1000) ============================
304
267
  Warming up --------------------------------------
305
- push + pop (findmin) 496.816k i/s - 1.028M times in 2.069729s (2.01μs/i)
306
- push + pop (bsearch) 1.964M i/s - 3.956M times in 2.014551s (509.28ns/i)
307
- push + pop (rb_heap) 1.043M i/s - 2.150M times in 2.061288s (958.58ns/i)
308
- push + pop (c++ stl) 5.289M i/s - 10.720M times in 2.026911s (189.07ns/i, 346clocks/i)
309
- push + pop (c_dheap) 6.890M i/s - 13.979M times in 2.029039s (145.15ns/i, 411clocks/i)
268
+ push + pop (findmin) 657.093k i/s - 672.360k times in 1.023235s (1.52μs/i)
269
+ push + pop (bsearch) 2.094M i/s - 2.182M times in 1.041939s (477.56ns/i)
270
+ push + pop (rb_heap) 1.228M i/s - 1.278M times in 1.040514s (814.00ns/i)
271
+ push + pop (c++ stl) 6.181M i/s - 6.238M times in 1.009224s (161.78ns/i, 375clocks/i)
272
+ push + pop (c_dheap) 6.881M i/s - 6.986M times in 1.015318s (145.33ns/i, 347clocks/i)
310
273
  Calculating -------------------------------------
311
- push + pop (findmin) 498.357k i/s - 2.981M times in 5.981452s (2.01μs/i)
312
- push + pop (bsearch) 2.016M i/s - 11.781M times in 5.844338s (496.07ns/i)
313
- push + pop (rb_heap) 1.056M i/s - 6.259M times in 5.926221s (946.80ns/i)
314
- push + pop (c++ stl) 6.149M i/s - 31.734M times in 5.160646s (162.62ns/i, 357clocks/i)
315
- push + pop (c_dheap) 7.240M i/s - 41.337M times in 5.709252s (138.11ns/i, 365clocks/i)
274
+ push + pop (findmin) 656.982k i/s - 1.971M times in 3.000502s (1.52μs/i)
275
+ push + pop (bsearch) 2.159M i/s - 6.282M times in 2.909771s (463.19ns/i, 907clocks/i)
276
+ push + pop (rb_heap) 1.214M i/s - 3.685M times in 3.035461s (823.62ns/i)
277
+ push + pop (c++ stl) 6.866M i/s - 18.543M times in 2.700613s (145.64ns/i, 347clocks/i)
278
+ push + pop (c_dheap) 9.168M i/s - 20.643M times in 2.251669s (109.08ns/i, 223clocks/i)
316
279
 
317
280
  Comparison:
318
- push + pop (c_dheap): 7240436.4 i/s
319
- push + pop (c++ stl): 6149299.4 i/s - 1.18x slower
320
- push + pop (bsearch): 2015850.6 i/s - 3.59x slower
321
- push + pop (rb_heap): 1056192.6 i/s - 6.86x slower
322
- push + pop (findmin): 498356.6 i/s - 14.53x slower
281
+ push + pop (c_dheap): 9167926.8 i/s
282
+ push + pop (c++ stl): 6866291.1 i/s - 1.34x slower
283
+ push + pop (bsearch): 2158927.2 i/s - 4.25x slower
284
+ push + pop (rb_heap): 1214146.7 i/s - 7.55x slower
285
+ push + pop (findmin): 656982.4 i/s - 13.95x slower
323
286
 
324
287
  ################################################################################
325
- # Benchmarks with N=5461 (t=10sec/benchmark)
288
+ # Benchmarks with N=3,000
326
289
  ################################################################################
327
290
 
328
- == push N (N=5461) ============================================================
329
- Warming up --------------------------------------
330
- push N (bsearch) 269.520 i/s - 560.000 times in 2.077767s (3.71ms/i)
331
- push N (rb_heap) 717.703 i/s - 1.440k times in 2.006402s (1.39ms/i)
332
- push N (c++ stl) 1.462k i/s - 3.045k times in 2.082734s (683.99μs/i)
333
- push N (c_dheap) 1.823k i/s - 3.780k times in 2.073303s (548.49μs/i)
291
+ == push N (N=3000) ============================================================
334
292
  Calculating -------------------------------------
335
- push N (bsearch) 258.932 i/s - 1.617k times in 6.244873s (3.86ms/i)
336
- push N (rb_heap) 723.029 i/s - 4.306k times in 5.955502s (1.38ms/i)
337
- push N (c++ stl) 1.407k i/s - 8.772k times in 6.235747s (710.87μs/i)
338
- push N (c_dheap) 1.853k i/s - 10.939k times in 5.904004s (539.72μs/i)
293
+ push N (findmin) 10.260M i/s - 30.000M times in 2.923922s (97.46ns/i, 237clocks/i)
294
+ push N (bsearch) 1.694M i/s - 600.000k times in 0.354106s (590.18ns/i)
295
+ push N (rb_heap) 4.415M i/s - 12.000M times in 2.717734s (226.48ns/i, 545clocks/i)
296
+ push N (c++ stl) 7.991M i/s - 18.000M times in 2.252536s (125.14ns/i, 309clocks/i)
297
+ push N (c_dheap) 10.524M i/s - 30.000M times in 2.850733s (95.02ns/i, 205clocks/i)
339
298
 
340
299
  Comparison:
341
- push N (c_dheap): 1852.8 i/s
342
- push N (c++ stl): 1406.7 i/s - 1.32x slower
343
- push N (rb_heap): 723.0 i/s - 2.56x slower
344
- push N (bsearch): 258.9 i/s - 7.16x slower
300
+ push N (c_dheap): 10523609.1 i/s
301
+ push N (findmin): 10260193.1 i/s - 1.03x slower
302
+ push N (c++ stl): 7990992.5 i/s - 1.32x slower
303
+ push N (rb_heap): 4415442.7 i/s - 2.38x slower
304
+ push N (bsearch): 1694409.5 i/s - 6.21x slower
345
305
 
346
- == push N then pop N (N=5461) ==================================================
306
+ == push N then pop N (N=3000) ==================================================
307
+ Calculating -------------------------------------
308
+ push N + pop N (bsearch) 3.095M i/s - 1.200M times in 0.387763s (323.14ns/i, 873clocks/i)
309
+ push N + pop N (rb_heap) 1.617M i/s - 6.000M times in 3.709670s (618.28ns/i)
310
+ push N + pop N (c++ stl) 7.892M i/s - 18.000M times in 2.280843s (126.71ns/i, 307clocks/i)
311
+ push N + pop N (c_dheap) 8.742M i/s - 18.000M times in 2.059004s (114.39ns/i, 337clocks/i)
312
+
313
+ Comparison:
314
+ push N + pop N (c_dheap): 8742091.2 i/s
315
+ push N + pop N (c++ stl): 7891817.5 i/s - 1.11x slower
316
+ push N + pop N (bsearch): 3094677.1 i/s - 2.82x slower
317
+ push N + pop N (rb_heap): 1617394.7 i/s - 5.41x slower
318
+
319
+ ################################################################################
320
+ # Benchmarks with N=3,162
321
+ ################################################################################
322
+
323
+ == Push/pop with pre-filled queue (size=N) (N=3162) ============================
347
324
  Warming up --------------------------------------
348
- push N + pop N (findmin) 12.207 i/s - 26.000 times in 2.129850s (81.92ms/i)
349
- push N + pop N (bsearch) 251.139 i/s - 525.000 times in 2.090473s (3.98ms/i)
350
- push N + pop N (rb_heap) 137.157 i/s - 280.000 times in 2.041453s (7.29ms/i)
351
- push N + pop N (c++ stl) 724.325 i/s - 1.460k times in 2.015670s (1.38ms/i)
352
- push N + pop N (c_dheap) 794.655 i/s - 1.600k times in 2.013452s (1.26ms/i)
353
- Calculating -------------------------------------
354
- push N + pop N (findmin) 12.381 i/s - 73.000 times in 5.896102s (80.77ms/i)
355
- push N + pop N (bsearch) 249.090 i/s - 1.506k times in 6.046014s (4.01ms/i)
356
- push N + pop N (rb_heap) 136.820 i/s - 822.000 times in 6.007880s (7.31ms/i)
357
- push N + pop N (c++ stl) 699.853 i/s - 4.345k times in 6.208445s (1.43ms/i)
358
- push N + pop N (c_dheap) 779.676 i/s - 4.767k times in 6.114082s (1.28ms/i)
359
-
360
- Comparison:
361
- push N + pop N (c_dheap): 779.7 i/s
362
- push N + pop N (c++ stl): 699.9 i/s - 1.11x slower
363
- push N + pop N (bsearch): 249.1 i/s - 3.13x slower
364
- push N + pop N (rb_heap): 136.8 i/s - 5.70x slower
365
- push N + pop N (findmin): 12.4 i/s - 62.97x slower
366
-
367
- == Push/pop with pre-filled queue (size=N) (N=5461) ============================
325
+ push + pop (findmin) 218.524k i/s - 225.030k times in 1.029772s (4.58μs/i)
326
+ push + pop (bsearch) 1.784M i/s - 1.818M times in 1.018826s (560.50ns/i)
327
+ push + pop (rb_heap) 906.303k i/s - 906.848k times in 1.000601s (1.10μs/i)
328
+ push + pop (c++ stl) 5.662M i/s - 5.788M times in 1.022279s (176.61ns/i, 397clocks/i)
329
+ push + pop (c_dheap) 7.653M i/s - 7.799M times in 1.019106s (130.67ns/i, 268clocks/i)
330
+ Calculating -------------------------------------
331
+ push + pop (findmin) 213.811k i/s - 655.572k times in 3.066131s (4.68μs/i)
332
+ push + pop (bsearch) 1.942M i/s - 5.352M times in 2.755670s (514.86ns/i)
333
+ push + pop (rb_heap) 945.426k i/s - 2.719M times in 2.875855s (1.06μs/i)
334
+ push + pop (c++ stl) 6.251M i/s - 16.987M times in 2.717417s (159.97ns/i, 371clocks/i)
335
+ push + pop (c_dheap) 8.645M i/s - 22.958M times in 2.655715s (115.68ns/i, 266clocks/i)
336
+
337
+ Comparison:
338
+ push + pop (c_dheap): 8644863.6 i/s
339
+ push + pop (c++ stl): 6251071.8 i/s - 1.38x slower
340
+ push + pop (bsearch): 1942294.3 i/s - 4.45x slower
341
+ push + pop (rb_heap): 945426.2 i/s - 9.14x slower
342
+ push + pop (findmin): 213810.8 i/s - 40.43x slower
343
+
344
+ ################################################################################
345
+ # Benchmarks with N=10,000
346
+ ################################################################################
347
+
348
+ == push N (N=10000) ============================================================
349
+ Calculating -------------------------------------
350
+ push N (findmin) 10.192M i/s - 30.000M times in 2.943544s (98.12ns/i, 210clocks/i)
351
+ push N (bsearch) 1.214M i/s - 600.000k times in 0.494405s (824.01ns/i)
352
+ push N (rb_heap) 4.369M i/s - 12.000M times in 2.746465s (228.87ns/i, 494clocks/i)
353
+ push N (c++ stl) 8.211M i/s - 18.000M times in 2.192209s (121.79ns/i, 258clocks/i)
354
+ push N (c_dheap) 10.445M i/s - 30.000M times in 2.872301s (95.74ns/i, 230clocks/i)
355
+
356
+ Comparison:
357
+ push N (c_dheap): 10444588.3 i/s
358
+ push N (findmin): 10191797.4 i/s - 1.02x slower
359
+ push N (c++ stl): 8210895.4 i/s - 1.27x slower
360
+ push N (rb_heap): 4369252.9 i/s - 2.39x slower
361
+ push N (bsearch): 1213580.4 i/s - 8.61x slower
362
+
363
+ == push N then pop N (N=10000) ================================================
364
+ Calculating -------------------------------------
365
+ push N + pop N (bsearch) 2.257M i/s - 1.200M times in 0.531668s (443.06ns/i)
366
+ push N + pop N (rb_heap) 1.439M i/s - 6.000M times in 4.168970s (694.83ns/i)
367
+ push N + pop N (c++ stl) 7.366M i/s - 18.000M times in 2.443772s (135.77ns/i, 353clocks/i)
368
+ push N + pop N (c_dheap) 8.084M i/s - 18.000M times in 2.226631s (123.70ns/i, 269clocks/i)
369
+
370
+ Comparison:
371
+ push N + pop N (c_dheap): 8083962.7 i/s
372
+ push N + pop N (c++ stl): 7365661.8 i/s - 1.10x slower
373
+ push N + pop N (bsearch): 2257047.9 i/s - 3.58x slower
374
+ push N + pop N (rb_heap): 1439204.3 i/s - 5.62x slower
375
+
376
+ == Push/pop with pre-filled queue (size=N) (N=10000) ==========================
368
377
  Warming up --------------------------------------
369
- push + pop (findmin) 122.350k i/s - 245.280k times in 2.004736s (8.17μs/i)
370
- push + pop (bsearch) 1.778M i/s - 3.633M times in 2.043729s (562.57ns/i)
371
- push + pop (rb_heap) 918.753k i/s - 1.850M times in 2.013237s (1.09μs/i)
372
- push + pop (c++ stl) 5.000M i/s - 10.088M times in 2.017440s (199.99ns/i, 445clocks/i)
373
- push + pop (c_dheap) 6.520M i/s - 13.190M times in 2.023137s (153.39ns/i, 427clocks/i)
378
+ push + pop (findmin) 38.436k i/s - 38.985k times in 1.014294s (26.02μs/i)
379
+ push + pop (bsearch) 1.701M i/s - 1.806M times in 1.061608s (587.89ns/i)
380
+ push + pop (rb_heap) 829.401k i/s - 851.418k times in 1.026545s (1.21μs/i)
381
+ push + pop (c++ stl) 4.996M i/s - 5.179M times in 1.036658s (200.16ns/i, 533clocks/i)
382
+ push + pop (c_dheap) 6.884M i/s - 6.916M times in 1.004562s (145.26ns/i, 320clocks/i)
374
383
  Calculating -------------------------------------
375
- push + pop (findmin) 120.450k i/s - 734.101k times in 6.094657s (8.30μs/i)
376
- push + pop (bsearch) 1.799M i/s - 10.665M times in 5.928598s (555.87ns/i)
377
- push + pop (rb_heap) 870.024k i/s - 5.513M times in 6.336058s (1.15μs/i)
378
- push + pop (c++ stl) 5.594M i/s - 30.001M times in 5.363045s (178.76ns/i, 451clocks/i)
379
- push + pop (c_dheap) 6.991M i/s - 39.117M times in 5.595561s (143.05ns/i, 373clocks/i)
384
+ push + pop (findmin) 42.033k i/s - 115.306k times in 2.743242s (23.79μs/i)
385
+ push + pop (bsearch) 1.699M i/s - 5.103M times in 3.003166s (588.51ns/i)
386
+ push + pop (rb_heap) 844.004k i/s - 2.488M times in 2.948094s (1.18μs/i)
387
+ push + pop (c++ stl) 5.720M i/s - 14.988M times in 2.620286s (174.83ns/i, 439clocks/i)
388
+ push + pop (c_dheap) 8.029M i/s - 20.653M times in 2.572341s (124.55ns/i, 239clocks/i)
380
389
 
381
390
  Comparison:
382
- push + pop (c_dheap): 6990729.5 i/s
383
- push + pop (c++ stl): 5594102.7 i/s - 1.25x slower
384
- push + pop (bsearch): 1798974.6 i/s - 3.89x slower
385
- push + pop (rb_heap): 870023.6 i/s - 8.04x slower
386
- push + pop (findmin): 120449.9 i/s - 58.04x slower
391
+ push + pop (c_dheap): 8028814.5 i/s
392
+ push + pop (c++ stl): 5719855.1 i/s - 1.40x slower
393
+ push + pop (bsearch): 1699219.0 i/s - 4.73x slower
394
+ push + pop (rb_heap): 844004.1 i/s - 9.51x slower
395
+ push + pop (findmin): 42032.8 i/s - 191.01x slower
387
396
 
388
397
  ################################################################################
389
- # Benchmarks with N=21845 (t=10sec/benchmark)
398
+ # Benchmarks with N=30,000
390
399
  ################################################################################
391
400
 
392
- == push N (N=21845) ============================================================
401
+ == push N (N=30000) ============================================================
402
+ Calculating -------------------------------------
403
+ push N (findmin) 10.286M i/s - 30.000M times in 2.916695s (97.22ns/i, 246clocks/i)
404
+ push N (bsearch) 626.769k i/s - 600.000k times in 0.957290s (1.60μs/i)
405
+ push N (rb_heap) 4.372M i/s - 12.000M times in 2.744993s (228.75ns/i, 586clocks/i)
406
+ push N (c++ stl) 7.925M i/s - 18.000M times in 2.271289s (126.18ns/i, 363clocks/i)
407
+ push N (c_dheap) 10.471M i/s - 30.000M times in 2.865042s (95.50ns/i, 209clocks/i)
408
+
409
+ Comparison:
410
+ push N (c_dheap): 10471051.5 i/s
411
+ push N (findmin): 10285616.0 i/s - 1.02x slower
412
+ push N (c++ stl): 7925015.4 i/s - 1.32x slower
413
+ push N (rb_heap): 4371595.7 i/s - 2.40x slower
414
+ push N (bsearch): 626769.1 i/s - 16.71x slower
415
+
416
+ == push N then pop N (N=30000) ================================================
417
+ Calculating -------------------------------------
418
+ push N + pop N (bsearch) 1.223M i/s - 1.200M times in 0.981407s (817.84ns/i)
419
+ push N + pop N (rb_heap) 1.305M i/s - 6.000M times in 4.596226s (766.04ns/i)
420
+ push N + pop N (c++ stl) 6.965M i/s - 18.000M times in 2.584494s (143.58ns/i, 379clocks/i)
421
+ push N + pop N (c_dheap) 7.438M i/s - 18.000M times in 2.419970s (134.44ns/i, 271clocks/i)
422
+
423
+ Comparison:
424
+ push N + pop N (c_dheap): 7438108.8 i/s
425
+ push N + pop N (c++ stl): 6964611.7 i/s - 1.07x slower
426
+ push N + pop N (rb_heap): 1305418.8 i/s - 5.70x slower
427
+ push N + pop N (bsearch): 1222734.6 i/s - 6.08x slower
428
+
429
+ ################################################################################
430
+ # Benchmarks with N=31,623
431
+ ################################################################################
432
+
433
+ == Push/pop with pre-filled queue (size=N) (N=31623) ==========================
393
434
  Warming up --------------------------------------
394
- push N (bsearch) 29.500 i/s - 60.000 times in 2.033920s (33.90ms/i)
395
- push N (rb_heap) 180.110 i/s - 378.000 times in 2.098720s (5.55ms/i)
396
- push N (c++ stl) 341.267 i/s - 700.000 times in 2.051181s (2.93ms/i)
397
- push N (c_dheap) 452.850 i/s - 920.000 times in 2.031579s (2.21ms/i)
435
+ push + pop (findmin) 4.101k i/s - 4.296k times in 1.047474s (243.83μs/i)
436
+ push + pop (bsearch) 1.422M i/s - 1.433M times in 1.007735s (703.26ns/i)
437
+ push + pop (rb_heap) 808.387k i/s - 842.904k times in 1.042698s (1.24μs/i)
438
+ push + pop (c++ stl) 4.707M i/s - 4.894M times in 1.039760s (212.47ns/i, 498clocks/i)
439
+ push + pop (c_dheap) 6.838M i/s - 6.889M times in 1.007490s (146.25ns/i, 383clocks/i)
398
440
  Calculating -------------------------------------
399
- push N (bsearch) 34.825 i/s - 176.000 times in 5.053771s (28.71ms/i)
400
- push N (rb_heap) 178.444 i/s - 1.080k times in 6.052328s (5.60ms/i)
401
- push N (c++ stl) 339.996 i/s - 2.047k times in 6.020652s (2.94ms/i)
402
- push N (c_dheap) 471.606 i/s - 2.717k times in 5.761168s (2.12ms/i)
441
+ push + pop (findmin) 4.386k i/s - 12.303k times in 2.805010s (227.99μs/i)
442
+ push + pop (bsearch) 1.416M i/s - 4.266M times in 3.012567s (706.20ns/i)
443
+ push + pop (rb_heap) 824.220k i/s - 2.425M times in 2.942372s (1.21μs/i)
444
+ push + pop (c++ stl) 5.005M i/s - 14.120M times in 2.821127s (199.80ns/i, 408clocks/i)
445
+ push + pop (c_dheap) 7.584M i/s - 20.513M times in 2.704950s (131.87ns/i, 319clocks/i)
403
446
 
404
447
  Comparison:
405
- push N (c_dheap): 471.6 i/s
406
- push N (c++ stl): 340.0 i/s - 1.39x slower
407
- push N (rb_heap): 178.4 i/s - 2.64x slower
408
- push N (bsearch): 34.8 i/s - 13.54x slower
448
+ push + pop (c_dheap): 7583504.1 i/s
449
+ push + pop (c++ stl): 5005005.3 i/s - 1.52x slower
450
+ push + pop (bsearch): 1416019.5 i/s - 5.36x slower
451
+ push + pop (rb_heap): 824219.7 i/s - 9.20x slower
452
+ push + pop (findmin): 4386.1 i/s - 1728.99x slower
453
+
454
+ ################################################################################
455
+ # Benchmarks with N=100,000
456
+ ################################################################################
457
+
458
+ == push N (N=100000) ==========================================================
459
+ Calculating -------------------------------------
460
+ push N (findmin) 10.279M i/s - 30.000M times in 2.918590s (97.29ns/i, 244clocks/i)
461
+ push N (bsearch) 220.832k i/s - 600.000k times in 2.717000s (4.53μs/i)
462
+ push N (rb_heap) 4.384M i/s - 12.000M times in 2.736961s (228.08ns/i, 561clocks/i)
463
+ push N (c++ stl) 7.739M i/s - 18.000M times in 2.325853s (129.21ns/i, 317clocks/i)
464
+ push N (c_dheap) 10.446M i/s - 30.000M times in 2.872022s (95.73ns/i, 170clocks/i)
409
465
 
410
- == push N then pop N (N=21845) ================================================
466
+ Comparison:
467
+ push N (c_dheap): 10445603.0 i/s
468
+ push N (findmin): 10278935.5 i/s - 1.02x slower
469
+ push N (c++ stl): 7739095.9 i/s - 1.35x slower
470
+ push N (rb_heap): 4384424.4 i/s - 2.38x slower
471
+ push N (bsearch): 220831.8 i/s - 47.30x slower
472
+
473
+ == push N then pop N (N=100000) ================================================
474
+ Calculating -------------------------------------
475
+ push N + pop N (bsearch) 443.386k i/s - 1.200M times in 2.706446s (2.26μs/i)
476
+ push N + pop N (rb_heap) 1.174M i/s - 6.000M times in 5.112169s (852.03ns/i)
477
+ push N + pop N (c++ stl) 6.467M i/s - 18.000M times in 2.783322s (154.63ns/i, 423clocks/i)
478
+ push N + pop N (c_dheap) 6.772M i/s - 18.000M times in 2.658145s (147.67ns/i, 380clocks/i)
479
+
480
+ Comparison:
481
+ push N + pop N (c_dheap): 6771640.7 i/s
482
+ push N + pop N (c++ stl): 6467092.5 i/s - 1.05x slower
483
+ push N + pop N (rb_heap): 1173670.1 i/s - 5.77x slower
484
+ push N + pop N (bsearch): 443385.9 i/s - 15.27x slower
485
+
486
+ == Push/pop with pre-filled queue (size=N) (N=100000) ==========================
411
487
  Warming up --------------------------------------
412
- push N + pop N (findmin) 0.779 i/s - 2.000 times in 2.567523s (1.28s/i)
413
- push N + pop N (bsearch) 34.097 i/s - 72.000 times in 2.111648s (29.33ms/i)
414
- push N + pop N (rb_heap) 30.004 i/s - 63.000 times in 2.099747s (33.33ms/i)
415
- push N + pop N (c++ stl) 162.161 i/s - 340.000 times in 2.096682s (6.17ms/i)
416
- push N + pop N (c_dheap) 174.422 i/s - 360.000 times in 2.063954s (5.73ms/i)
417
- Calculating -------------------------------------
418
- push N + pop N (findmin) 0.778 i/s - 4.000 times in 5.144549s (1.29s/i)
419
- push N + pop N (bsearch) 32.991 i/s - 204.000 times in 6.183540s (30.31ms/i)
420
- push N + pop N (rb_heap) 29.347 i/s - 180.000 times in 6.133559s (34.08ms/i)
421
- push N + pop N (c++ stl) 164.692 i/s - 972.000 times in 5.901925s (6.07ms/i)
422
- push N + pop N (c_dheap) 171.201 i/s - 1.046k times in 6.109760s (5.84ms/i)
423
-
424
- Comparison:
425
- push N + pop N (c_dheap): 171.2 i/s
426
- push N + pop N (c++ stl): 164.7 i/s - 1.04x slower
427
- push N + pop N (bsearch): 33.0 i/s - 5.19x slower
428
- push N + pop N (rb_heap): 29.3 i/s - 5.83x slower
429
- push N + pop N (findmin): 0.8 i/s - 220.19x slower
430
-
431
- == Push/pop with pre-filled queue (size=N) (N=21845) ==========================
488
+ push + pop (findmin) 1.081k i/s - 1.090k times in 1.008121s (924.88μs/i)
489
+ push + pop (bsearch) 93.746k i/s - 94.380k times in 1.006760s (10.67μs/i)
490
+ push + pop (rb_heap) 614.413k i/s - 617.988k times in 1.005818s (1.63μs/i)
491
+ push + pop (c++ stl) 4.384M i/s - 4.526M times in 1.032424s (228.10ns/i, 367clocks/i)
492
+ push + pop (c_dheap) 6.357M i/s - 6.395M times in 1.006052s (157.31ns/i, 351clocks/i)
493
+ Calculating -------------------------------------
494
+ push + pop (findmin) 1.118k i/s - 3.243k times in 2.901718s (894.76μs/i)
495
+ push + pop (bsearch) 126.592k i/s - 281.238k times in 2.221611s (7.90μs/i)
496
+ push + pop (rb_heap) 640.816k i/s - 1.843M times in 2.876396s (1.56μs/i)
497
+ push + pop (c++ stl) 4.598M i/s - 13.152M times in 2.860115s (217.47ns/i, 548clocks/i)
498
+ push + pop (c_dheap) 7.040M i/s - 19.070M times in 2.708918s (142.05ns/i, 402clocks/i)
499
+
500
+ Comparison:
501
+ push + pop (c_dheap): 7039813.2 i/s
502
+ push + pop (c++ stl): 4598367.9 i/s - 1.53x slower
503
+ push + pop (rb_heap): 640815.8 i/s - 10.99x slower
504
+ push + pop (bsearch): 126591.9 i/s - 55.61x slower
505
+ push + pop (findmin): 1117.6 i/s - 6298.97x slower
506
+
507
+ ################################################################################
508
+ # Benchmarks with N=300,000
509
+ ################################################################################
510
+
511
+ == push N (N=300000) ==========================================================
512
+ Calculating -------------------------------------
513
+ push N (findmin) 10.292M i/s - 30.000M times in 2.914849s (97.16ns/i, 216clocks/i)
514
+ push N (rb_heap) 4.366M i/s - 12.000M times in 2.748236s (229.02ns/i, 508clocks/i)
515
+ push N (c++ stl) 7.606M i/s - 18.000M times in 2.366608s (131.48ns/i, 237clocks/i)
516
+ push N (c_dheap) 10.406M i/s - 30.000M times in 2.882976s (96.10ns/i, 239clocks/i)
517
+
518
+ Comparison:
519
+ push N (c_dheap): 10405915.1 i/s
520
+ push N (findmin): 10292126.6 i/s - 1.01x slower
521
+ push N (c++ stl): 7605822.4 i/s - 1.37x slower
522
+ push N (rb_heap): 4366436.9 i/s - 2.38x slower
523
+
524
+ == push N then pop N (N=300000) ================================================
525
+ Calculating -------------------------------------
526
+ push N + pop N (rb_heap) 1.090M i/s - 6.000M times in 5.503067s (917.18ns/i)
527
+ push N + pop N (c++ stl) 6.194M i/s - 18.000M times in 2.906249s (161.46ns/i, 397clocks/i)
528
+ push N + pop N (c_dheap) 5.898M i/s - 18.000M times in 3.051953s (169.55ns/i, 380clocks/i)
529
+
530
+ Comparison:
531
+ push N + pop N (c++ stl): 6193550.8 i/s
532
+ push N + pop N (c_dheap): 5897862.5 i/s - 1.05x slower
533
+ push N + pop N (rb_heap): 1090301.2 i/s - 5.68x slower
534
+
535
+ ################################################################################
536
+ # Benchmarks with N=316,228
537
+ ################################################################################
538
+
539
+ == Push/pop with pre-filled queue (size=N) (N=316228) ==========================
432
540
  Warming up --------------------------------------
433
- push + pop (findmin) 9.674k i/s - 19.701k times in 2.036569s (103.37μs/i)
434
- push + pop (bsearch) 1.565M i/s - 3.181M times in 2.032390s (638.93ns/i)
435
- push + pop (rb_heap) 830.840k i/s - 1.701M times in 2.047922s (1.20μs/i)
436
- push + pop (c++ stl) 4.606M i/s - 9.338M times in 2.027286s (217.11ns/i, 525clocks/i)
437
- push + pop (c_dheap) 5.854M i/s - 11.791M times in 2.014052s (170.81ns/i, 453clocks/i)
541
+ push + pop (findmin) 329.363 i/s - 340.000 times in 1.032295s (3.04ms/i)
542
+ push + pop (bsearch) 26.855k i/s - 27.870k times in 1.037803s (37.24μs/i)
543
+ push + pop (rb_heap) 510.061k i/s - 516.120k times in 1.011878s (1.96μs/i)
544
+ push + pop (c++ stl) 3.662M i/s - 3.787M times in 1.034233s (273.07ns/i, 485clocks/i)
545
+ push + pop (c_dheap) 5.829M i/s - 5.952M times in 1.021078s (171.56ns/i, 409clocks/i)
438
546
  Calculating -------------------------------------
439
- push + pop (findmin) 11.522k i/s - 58.041k times in 5.037203s (86.79μs/i)
440
- push + pop (bsearch) 1.528M i/s - 9.391M times in 6.144507s (654.32ns/i)
441
- push + pop (rb_heap) 802.621k i/s - 4.985M times in 6.210948s (1.25μs/i)
442
- push + pop (c++ stl) 4.959M i/s - 27.636M times in 5.573344s (201.67ns/i, 561clocks/i)
443
- push + pop (c_dheap) 6.275M i/s - 35.126M times in 5.597394s (159.35ns/i, 421clocks/i)
547
+ push + pop (findmin) 336.903 i/s - 988.000 times in 2.932592s (2.97ms/i)
548
+ push + pop (bsearch) 26.374k i/s - 80.564k times in 3.054645s (37.92μs/i)
549
+ push + pop (rb_heap) 586.229k i/s - 1.530M times in 2.610215s (1.71μs/i)
550
+ push + pop (c++ stl) 4.199M i/s - 10.986M times in 2.616590s (238.17ns/i, 562clocks/i)
551
+ push + pop (c_dheap) 6.651M i/s - 17.486M times in 2.628997s (150.35ns/i, 320clocks/i)
444
552
 
445
553
  Comparison:
446
- push + pop (c_dheap): 6275438.5 i/s
447
- push + pop (c++ stl): 4958577.7 i/s - 1.27x slower
448
- push + pop (bsearch): 1528297.6 i/s - 4.11x slower
449
- push + pop (rb_heap): 802621.5 i/s - 7.82x slower
450
- push + pop (findmin): 11522.5 i/s - 544.63x slower
554
+ push + pop (c_dheap): 6651247.1 i/s
555
+ push + pop (c++ stl): 4198720.4 i/s - 1.58x slower
556
+ push + pop (rb_heap): 586229.1 i/s - 11.35x slower
557
+ push + pop (bsearch): 26374.3 i/s - 252.19x slower
558
+ push + pop (findmin): 336.9 i/s - 19742.30x slower
451
559
 
452
560
  ################################################################################
453
- # Benchmarks with N=87381 (t=10sec/benchmark)
561
+ # Benchmarks with N=1,000,000
454
562
  ################################################################################
455
563
 
456
- == push N (N=87381) ============================================================
564
+ == push N (N=1000000) ==========================================================
565
+ Calculating -------------------------------------
566
+ push N (findmin) 9.964M i/s - 30.000M times in 3.010870s (100.36ns/i, 238clocks/i)
567
+ push N (rb_heap) 4.350M i/s - 12.000M times in 2.758547s (229.88ns/i, 403clocks/i)
568
+ push N (c++ stl) 7.892M i/s - 18.000M times in 2.280812s (126.71ns/i, 234clocks/i)
569
+ push N (c_dheap) 10.342M i/s - 30.000M times in 2.900741s (96.69ns/i, 217clocks/i)
570
+
571
+ Comparison:
572
+ push N (c_dheap): 10342183.7 i/s
573
+ push N (findmin): 9963898.8 i/s - 1.04x slower
574
+ push N (c++ stl): 7891924.8 i/s - 1.31x slower
575
+ push N (rb_heap): 4350116.0 i/s - 2.38x slower
576
+
577
+ == push N then pop N (N=1000000) ==============================================
578
+ Calculating -------------------------------------
579
+ push N + pop N (rb_heap) 976.689k i/s - 6.000M times in 6.143207s (1.02μs/i)
580
+ push N + pop N (c++ stl) 5.275M i/s - 18.000M times in 3.412544s (189.59ns/i, 371clocks/i)
581
+ push N + pop N (c_dheap) 4.731M i/s - 18.000M times in 3.804598s (211.37ns/i, 510clocks/i)
582
+
583
+ Comparison:
584
+ push N + pop N (c++ stl): 5274657.5 i/s
585
+ push N + pop N (c_dheap): 4731117.9 i/s - 1.11x slower
586
+ push N + pop N (rb_heap): 976688.6 i/s - 5.40x slower
587
+
588
+ == Push/pop with pre-filled queue (size=N) (N=1000000) ========================
457
589
  Warming up --------------------------------------
458
- push N (bsearch) 2.860 i/s - 6.000 times in 2.097866s (349.64ms/i)
459
- push N (rb_heap) 44.082 i/s - 90.000 times in 2.041662s (22.69ms/i)
460
- push N (c++ stl) 87.951 i/s - 180.000 times in 2.046591s (11.37ms/i)
461
- push N (c_dheap) 114.586 i/s - 240.000 times in 2.094502s (8.73ms/i)
590
+ push + pop (findmin) 133.958 i/s - 140.000 times in 1.045105s (7.47ms/i)
591
+ push + pop (bsearch) 5.157k i/s - 5.170k times in 1.002466s (193.90μs/i)
592
+ push + pop (rb_heap) 530.099k i/s - 553.995k times in 1.045078s (1.89μs/i)
593
+ push + pop (c++ stl) 3.008M i/s - 3.068M times in 1.019941s (332.45ns/i, 961clocks/i)
594
+ push + pop (c_dheap) 3.792M i/s - 3.850M times in 1.015408s (263.74ns/i, 606clocks/i)
595
+ Calculating -------------------------------------
596
+ push + pop (findmin) 133.988 i/s - 401.000 times in 2.992798s (7.46ms/i)
597
+ push + pop (bsearch) 5.009k i/s - 15.471k times in 3.088774s (199.65μs/i)
598
+ push + pop (rb_heap) 542.219k i/s - 1.590M times in 2.932944s (1.84μs/i)
599
+ push + pop (c++ stl) 3.504M i/s - 9.024M times in 2.575239s (285.38ns/i, 601clocks/i)
600
+ push + pop (c_dheap) 4.702M i/s - 11.375M times in 2.419358s (212.70ns/i, 603clocks/i)
601
+
602
+ Comparison:
603
+ push + pop (c_dheap): 4701505.8 i/s
604
+ push + pop (c++ stl): 3504115.7 i/s - 1.34x slower
605
+ push + pop (rb_heap): 542219.0 i/s - 8.67x slower
606
+ push + pop (bsearch): 5008.8 i/s - 938.65x slower
607
+ push + pop (findmin): 134.0 i/s - 35088.93x slower
608
+
609
+ ################################################################################
610
+ # Benchmarks with N=3,000,000
611
+ ################################################################################
612
+
613
+ == push N (N=3000000) ==========================================================
614
+ Calculating -------------------------------------
615
+ push N (findmin) 10.061M i/s - 30.000M times in 2.981862s (99.40ns/i, 291clocks/i)
616
+ push N (rb_heap) 4.332M i/s - 12.000M times in 2.769993s (230.83ns/i, 666clocks/i)
617
+ push N (c++ stl) 7.700M i/s - 18.000M times in 2.337763s (129.88ns/i, 272clocks/i)
618
+ push N (c_dheap) 10.306M i/s - 30.000M times in 2.910863s (97.03ns/i, 231clocks/i)
619
+
620
+ Comparison:
621
+ push N (c_dheap): 10306222.6 i/s
622
+ push N (findmin): 10060827.1 i/s - 1.02x slower
623
+ push N (c++ stl): 7699668.9 i/s - 1.34x slower
624
+ push N (rb_heap): 4332141.2 i/s - 2.38x slower
625
+
626
+ == push N then pop N (N=3000000) ==============================================
462
627
  Calculating -------------------------------------
463
- push N (bsearch) 2.876 i/s - 17.000 times in 5.910605s (347.68ms/i)
464
- push N (rb_heap) 44.019 i/s - 264.000 times in 5.997408s (22.72ms/i)
465
- push N (c++ stl) 79.328 i/s - 527.000 times in 6.643283s (12.61ms/i)
466
- push N (c_dheap) 115.006 i/s - 687.000 times in 5.973623s (8.70ms/i)
628
+ push N + pop N (rb_heap) 844.839k i/s - 6.000M times in 7.101946s (1.18μs/i)
629
+ push N + pop N (c++ stl) 4.417M i/s - 18.000M times in 4.075439s (226.41ns/i, 576clocks/i)
630
+ push N + pop N (c_dheap) 4.006M i/s - 18.000M times in 4.493805s (249.66ns/i, 359clocks/i)
467
631
 
468
632
  Comparison:
469
- push N (c_dheap): 115.0 i/s
470
- push N (c++ stl): 79.3 i/s - 1.45x slower
471
- push N (rb_heap): 44.0 i/s - 2.61x slower
472
- push N (bsearch): 2.9 i/s - 39.99x slower
633
+ push N + pop N (c++ stl): 4416702.3 i/s
634
+ push N + pop N (c_dheap): 4005514.5 i/s - 1.10x slower
635
+ push N + pop N (rb_heap): 844838.9 i/s - 5.23x slower
636
+
637
+ ################################################################################
638
+ # Benchmarks with N=3,162,278
639
+ ################################################################################
473
640
 
474
- == push N then pop N (N=87381) ================================================
641
+ == Push/pop with pre-filled queue (size=N) (N=3162278) ========================
475
642
  Warming up --------------------------------------
476
- push N + pop N (findmin)0.0 i/s - 0.0 times in 15.004015s (Infs/i)
477
- push N + pop N (bsearch) 2.818 i/s - 6.000 times in 2.129230s (354.87ms/i)
478
- push N + pop N (rb_heap) 6.587 i/s - 14.000 times in 2.125416s (151.82ms/i)
479
- push N + pop N (c++ stl) 38.095 i/s - 80.000 times in 2.100037s (26.25ms/i)
480
- push N + pop N (c_dheap) 39.934 i/s - 80.000 times in 2.003287s (25.04ms/i)
481
- Calculating -------------------------------------
482
- push N + pop N (findmin)0.0 i/s - 0.0 times in 15.004015s (Infs/i)
483
- push N + pop N (bsearch) 2.905 i/s - 16.000 times in 5.507260s (344.20ms/i)
484
- push N + pop N (rb_heap) 6.675 i/s - 39.000 times in 5.843054s (149.82ms/i)
485
- push N + pop N (c++ stl) 38.576 i/s - 228.000 times in 5.910361s (25.92ms/i)
486
- push N + pop N (c_dheap) 39.508 i/s - 239.000 times in 6.049426s (25.31ms/i)
487
-
488
- Comparison:
489
- push N + pop N (c_dheap): 39.5 i/s
490
- push N + pop N (c++ stl): 38.6 i/s - 1.02x slower
491
- push N + pop N (rb_heap): 6.7 i/s - 5.92x slower
492
- push N + pop N (bsearch): 2.9 i/s - 13.60x slower
493
- push N + pop N (findmin): 0.0 i/s - Infx slower
494
-
495
- == Push/pop with pre-filled queue (size=N) (N=87381) ==========================
643
+ push + pop (findmin) 40.806 i/s - 45.000 times in 1.102775s (24.51ms/i)
644
+ push + pop (bsearch) 959.453 i/s - 968.000 times in 1.008908s (1.04ms/i)
645
+ push + pop (rb_heap) 465.404k i/s - 502.801k times in 1.080353s (2.15μs/i)
646
+ push + pop (c++ stl) 2.153M i/s - 2.167M times in 1.006608s (464.52ns/i)
647
+ push + pop (c_dheap) 2.301M i/s - 2.320M times in 1.007969s (434.52ns/i, 912clocks/i)
648
+ Calculating -------------------------------------
649
+ push + pop (findmin) 41.611 i/s - 122.000 times in 2.931911s (24.03ms/i)
650
+ push + pop (bsearch) 984.072 i/s - 2.878k times in 2.924583s (1.02ms/i)
651
+ push + pop (rb_heap) 463.971k i/s - 1.396M times in 3.009265s (2.16μs/i)
652
+ push + pop (c++ stl) 2.514M i/s - 6.458M times in 2.569153s (397.81ns/i, 749clocks/i)
653
+ push + pop (c_dheap) 2.845M i/s - 6.904M times in 2.426969s (351.52ns/i)
654
+
655
+ Comparison:
656
+ push + pop (c_dheap): 2844751.4 i/s
657
+ push + pop (c++ stl): 2513767.5 i/s - 1.13x slower
658
+ push + pop (rb_heap): 463971.4 i/s - 6.13x slower
659
+ push + pop (bsearch): 984.1 i/s - 2890.80x slower
660
+ push + pop (findmin): 41.6 i/s - 68365.22x slower
661
+
662
+ ################################################################################
663
+ # Benchmarks with N=10,000,000
664
+ ################################################################################
665
+
666
+ == Push/pop with pre-filled queue (size=N) (N=10000000) ========================
496
667
  Warming up --------------------------------------
497
- push + pop (findmin) 1.301k i/s - 2.646k times in 2.033177s (768.40μs/i)
498
- push + pop (bsearch) 399.722k i/s - 802.368k times in 2.007313s (2.50μs/i)
499
- push + pop (rb_heap) 693.504k i/s - 1.416M times in 2.042452s (1.44μs/i)
500
- push + pop (c++ stl) 3.984M i/s - 7.970M times in 2.000250s (250.98ns/i, 578clocks/i)
501
- push + pop (c_dheap) 5.101M i/s - 10.348M times in 2.028583s (196.05ns/i, 321clocks/i)
502
- Calculating -------------------------------------
503
- push + pop (findmin) 1.305k i/s - 7.808k times in 5.983727s (766.36μs/i)
504
- push + pop (bsearch) 516.666k i/s - 2.398M times in 4.641947s (1.94μs/i)
505
- push + pop (rb_heap) 695.029k i/s - 4.161M times in 5.986830s (1.44μs/i)
506
- push + pop (c++ stl) 4.478M i/s - 23.906M times in 5.338832s (223.32ns/i, 577clocks/i)
507
- push + pop (c_dheap) 5.968M i/s - 30.605M times in 5.128099s (167.56ns/i, 426clocks/i)
508
-
509
- Comparison:
510
- push + pop (c_dheap): 5968137.3 i/s
511
- push + pop (c++ stl): 4477815.8 i/s - 1.33x slower
512
- push + pop (rb_heap): 695029.1 i/s - 8.59x slower
513
- push + pop (bsearch): 516665.5 i/s - 11.55x slower
514
- push + pop (findmin): 1304.9 i/s - 4573.73x slower
668
+ push + pop (findmin) 12.805 i/s - 14.000 times in 1.093356s (78.10ms/i)
669
+ push + pop (bsearch) 286.818 i/s - 308.000 times in 1.073852s (3.49ms/i)
670
+ push + pop (rb_heap) 450.346k i/s - 452.478k times in 1.004734s (2.22μs/i)
671
+ push + pop (c++ stl) 1.816M i/s - 1.816M times in 0.999712s (550.55ns/i)
672
+ push + pop (c_dheap) 1.720M i/s - 1.725M times in 1.002939s (581.52ns/i)
673
+ Calculating -------------------------------------
674
+ push + pop (findmin) 12.962 i/s - 38.000 times in 2.931734s (77.15ms/i)
675
+ push + pop (bsearch) 315.781 i/s - 860.000 times in 2.723405s (3.17ms/i)
676
+ push + pop (rb_heap) 445.131k i/s - 1.351M times in 3.035144s (2.25μs/i)
677
+ push + pop (c++ stl) 1.962M i/s - 5.449M times in 2.777382s (509.70ns/i)
678
+ push + pop (c_dheap) 1.916M i/s - 5.159M times in 2.692582s (521.93ns/i)
679
+
680
+ Comparison:
681
+ push + pop (c++ stl): 1961952.2 i/s
682
+ push + pop (c_dheap): 1915981.2 i/s - 1.02x slower
683
+ push + pop (rb_heap): 445131.4 i/s - 4.41x slower
684
+ push + pop (bsearch): 315.8 i/s - 6213.01x slower
685
+ push + pop (findmin): 13.0 i/s - 151366.37x slower
515
686