d_heap 0.6.1 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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