Created
October 31, 2014 15:09
-
-
Save dubek/f5c4e68febe2a7c80e77 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require "benchmark/ips" | |
require "hamster/set" | |
require "hamster/version" | |
puts "OS Name: #{`uname -s -r -v -m -p -i -o`}" | |
puts "Ruby Version: #{`ruby -v`}" | |
puts "RubyGems Version: #{`gem -v`}" | |
puts "RVM Version: #{`rvm -v`}" | |
puts "Hamster version: #{Hamster::VERSION}" | |
def benchmark_filter(set_size, keep_below) | |
puts | |
puts | |
puts | |
Benchmark.ips do |b| | |
set = Hamster::Set.new((1..set_size).to_a) | |
set_b = Hamster::Set.new(((set_size/2)..set_size).to_a) | |
b.report "old_filter(N=#{set_size}, K=#{keep_below})" do | |
set.old_filter { |x| x <= keep_below } | |
end | |
b.report "filter(N=#{set_size}, K=#{keep_below})" do | |
set.filter { |x| x <= keep_below } | |
end | |
b.compare! | |
end | |
end | |
benchmark_filter(10, 2) | |
benchmark_filter(10, 8) | |
benchmark_filter(20, 4) | |
benchmark_filter(20, 16) | |
benchmark_filter(50, 10) | |
benchmark_filter(50, 40) | |
benchmark_filter(100, 20) | |
benchmark_filter(100, 80) | |
benchmark_filter(1000, 10) | |
benchmark_filter(1000, 200) | |
benchmark_filter(1000, 800) | |
benchmark_filter(1000, 990) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require "benchmark/ips" | |
require "hamster/set" | |
require "hamster/version" | |
puts "OS Name: #{`uname -s -r -v -m -p -i -o`}" | |
puts "Ruby Version: #{`ruby -v`}" | |
puts "RubyGems Version: #{`gem -v`}" | |
puts "RVM Version: #{`rvm -v`}" | |
puts "Hamster version: #{Hamster::VERSION}" | |
def benchmark_filter(hash_size, keep_below) | |
puts | |
puts | |
puts | |
Benchmark.ips do |b| | |
keys = (1..hash_size).to_a | |
values = keys_a.map { |k| "a-#{k}" } | |
hash = Hamster.hash(keys_a.zip(values_a)) | |
b.report "old_filter(N=#{hash_size}, K=#{keep_below})" do | |
hash.old_filter { |x| x <= keep_below } | |
end | |
b.report "filter(N=#{hash_size}, K=#{keep_below})" do | |
hash.filter { |x| x <= keep_below } | |
end | |
b.compare! | |
end | |
end | |
benchmark_filter(10, 2) | |
benchmark_filter(10, 8) | |
benchmark_filter(20, 4) | |
benchmark_filter(20, 16) | |
benchmark_filter(50, 10) | |
benchmark_filter(50, 40) | |
benchmark_filter(100, 20) | |
benchmark_filter(100, 80) | |
benchmark_filter(1000, 10) | |
benchmark_filter(1000, 200) | |
benchmark_filter(1000, 800) | |
benchmark_filter(1000, 990) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
OS Name: Linux 2.6.32-431.30.1.el6.x86_64 #1 SMP Wed Jul 30 14:44:26 EDT 2014 x86_64 x86_64 x86_64 GNU/Linux | |
Ruby Version: ruby 2.1.3p242 (2014-09-19 revision 47630) [x86_64-linux] | |
RubyGems Version: 2.2.2 | |
RVM Version: rvm 1.25.33 (stable) by Wayne E. Seguin <[email protected]>, Michal Papis <[email protected]> [https://rvm.io/] | |
Hamster version: 1.0.1-rc3 | |
Calculating ------------------------------------- | |
old_filter(N=10, K=2) | |
3375 i/100ms | |
filter(N=10, K=2) 5306 i/100ms | |
------------------------------------------------- | |
old_filter(N=10, K=2) | |
34317.2 (±0.9%) i/s - 172125 in 5.016153s | |
filter(N=10, K=2) 57675.6 (±1.2%) i/s - 291830 in 5.060676s | |
Comparison: | |
filter(N=10, K=2): 57675.6 i/s | |
old_filter(N=10, K=2): 34317.2 i/s - 1.68x slower | |
Calculating ------------------------------------- | |
old_filter(N=10, K=8) | |
6484 i/100ms | |
filter(N=10, K=8) 7420 i/100ms | |
------------------------------------------------- | |
old_filter(N=10, K=8) | |
72095.2 (±1.3%) i/s - 363104 in 5.037302s | |
filter(N=10, K=8) 82054.9 (±0.8%) i/s - 415520 in 5.064289s | |
Comparison: | |
filter(N=10, K=8): 82054.9 i/s | |
old_filter(N=10, K=8): 72095.2 i/s - 1.14x slower | |
Calculating ------------------------------------- | |
old_filter(N=20, K=4) | |
1537 i/100ms | |
filter(N=20, K=4) 2553 i/100ms | |
------------------------------------------------- | |
old_filter(N=20, K=4) | |
15642.4 (±1.1%) i/s - 78387 in 5.011832s | |
filter(N=20, K=4) 26719.4 (±1.3%) i/s - 135309 in 5.064962s | |
Comparison: | |
filter(N=20, K=4): 26719.4 i/s | |
old_filter(N=20, K=4): 15642.4 i/s - 1.71x slower | |
Calculating ------------------------------------- | |
old_filter(N=20, K=16) | |
3192 i/100ms | |
filter(N=20, K=16) 3721 i/100ms | |
------------------------------------------------- | |
old_filter(N=20, K=16) | |
32238.8 (±1.3%) i/s - 162792 in 5.050504s | |
filter(N=20, K=16) 39679.6 (±0.9%) i/s - 200934 in 5.064327s | |
Comparison: | |
filter(N=20, K=16): 39679.6 i/s | |
old_filter(N=20, K=16): 32238.8 i/s - 1.23x slower | |
Calculating ------------------------------------- | |
old_filter(N=50, K=10) | |
542 i/100ms | |
filter(N=50, K=10) 832 i/100ms | |
------------------------------------------------- | |
old_filter(N=50, K=10) | |
5410.6 (±1.3%) i/s - 27100 in 5.009646s | |
filter(N=50, K=10) 8410.9 (±1.1%) i/s - 42432 in 5.045593s | |
Comparison: | |
filter(N=50, K=10): 8410.9 i/s | |
old_filter(N=50, K=10): 5410.6 i/s - 1.55x slower | |
Calculating ------------------------------------- | |
old_filter(N=50, K=40) | |
1297 i/100ms | |
filter(N=50, K=40) 1605 i/100ms | |
------------------------------------------------- | |
old_filter(N=50, K=40) | |
12870.1 (±8.3%) i/s - 64850 in 5.087979s | |
filter(N=50, K=40) 16293.4 (±1.2%) i/s - 81855 in 5.024527s | |
Comparison: | |
filter(N=50, K=40): 16293.4 i/s | |
old_filter(N=50, K=40): 12870.1 i/s - 1.27x slower | |
Calculating ------------------------------------- | |
old_filter(N=100, K=20) | |
264 i/100ms | |
filter(N=100, K=20) 370 i/100ms | |
------------------------------------------------- | |
old_filter(N=100, K=20) | |
2601.5 (±1.2%) i/s - 13200 in 5.074711s | |
filter(N=100, K=20) 3710.3 (±0.8%) i/s - 18870 in 5.086168s | |
Comparison: | |
filter(N=100, K=20): 3710.3 i/s | |
old_filter(N=100, K=20): 2601.5 i/s - 1.43x slower | |
Calculating ------------------------------------- | |
old_filter(N=100, K=80) | |
717 i/100ms | |
filter(N=100, K=80) 908 i/100ms | |
------------------------------------------------- | |
old_filter(N=100, K=80) | |
7126.0 (±0.7%) i/s - 35850 in 5.031170s | |
filter(N=100, K=80) 9131.5 (±1.3%) i/s - 46308 in 5.072100s | |
Comparison: | |
filter(N=100, K=80): 9131.5 i/s | |
old_filter(N=100, K=80): 7126.0 i/s - 1.28x slower | |
Calculating ------------------------------------- | |
old_filter(N=1000, K=10) | |
16 i/100ms | |
filter(N=1000, K=10) 21 i/100ms | |
------------------------------------------------- | |
old_filter(N=1000, K=10) | |
161.6 (±1.9%) i/s - 816 in 5.051265s | |
filter(N=1000, K=10) 216.3 (±1.4%) i/s - 1092 in 5.048709s | |
Comparison: | |
filter(N=1000, K=10): 216.3 i/s | |
old_filter(N=1000, K=10): 161.6 i/s - 1.34x slower | |
Calculating ------------------------------------- | |
old_filter(N=1000, K=200) | |
20 i/100ms | |
filter(N=1000, K=200) | |
26 i/100ms | |
------------------------------------------------- | |
old_filter(N=1000, K=200) | |
204.8 (±1.5%) i/s - 1040 in 5.078630s | |
filter(N=1000, K=200) | |
263.3 (±2.3%) i/s - 1326 in 5.038179s | |
Comparison: | |
filter(N=1000, K=200): 263.3 i/s | |
old_filter(N=1000, K=200): 204.8 i/s - 1.29x slower | |
Calculating ------------------------------------- | |
old_filter(N=1000, K=800) | |
58 i/100ms | |
filter(N=1000, K=800) | |
73 i/100ms | |
------------------------------------------------- | |
old_filter(N=1000, K=800) | |
578.5 (±3.8%) i/s - 2900 in 5.021371s | |
filter(N=1000, K=800) | |
730.0 (±1.1%) i/s - 3650 in 5.000251s | |
Comparison: | |
filter(N=1000, K=800): 730.0 i/s | |
old_filter(N=1000, K=800): 578.5 i/s - 1.26x slower | |
Calculating ------------------------------------- | |
old_filter(N=1000, K=990) | |
146 i/100ms | |
filter(N=1000, K=990) | |
164 i/100ms | |
------------------------------------------------- | |
old_filter(N=1000, K=990) | |
1457.3 (±0.8%) i/s - 7300 in 5.009475s | |
filter(N=1000, K=990) | |
1670.7 (±1.5%) i/s - 8364 in 5.007446s | |
Comparison: | |
filter(N=1000, K=990): 1670.7 i/s | |
old_filter(N=1000, K=990): 1457.3 i/s - 1.15x slower | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
OS Name: Linux 2.6.32-431.30.1.el6.x86_64 #1 SMP Wed Jul 30 14:44:26 EDT 2014 x86_64 x86_64 x86_64 GNU/Linux | |
Ruby Version: ruby 2.1.3p242 (2014-09-19 revision 47630) [x86_64-linux] | |
RubyGems Version: 2.2.2 | |
RVM Version: rvm 1.25.33 (stable) by Wayne E. Seguin <[email protected]>, Michal Papis <[email protected]> [https://rvm.io/] | |
Hamster version: 1.0.1-rc3 | |
Calculating ------------------------------------- | |
old_filter(N=10, K=2) | |
3132 i/100ms | |
filter(N=10, K=2) 4825 i/100ms | |
------------------------------------------------- | |
old_filter(N=10, K=2) | |
30598.3 (±8.6%) i/s - 153468 in 5.062400s | |
filter(N=10, K=2) 52345.9 (±3.8%) i/s - 265375 in 5.077277s | |
Comparison: | |
filter(N=10, K=2): 52345.9 i/s | |
old_filter(N=10, K=2): 30598.3 i/s - 1.71x slower | |
Calculating ------------------------------------- | |
old_filter(N=10, K=8) | |
5973 i/100ms | |
filter(N=10, K=8) 7333 i/100ms | |
------------------------------------------------- | |
old_filter(N=10, K=8) | |
67003.7 (±9.4%) i/s - 340461 in 5.147048s | |
filter(N=10, K=8) 76040.1 (±12.1%) i/s - 373983 in 5.016412s | |
Comparison: | |
filter(N=10, K=8): 76040.1 i/s | |
old_filter(N=10, K=8): 67003.7 i/s - 1.13x slower | |
Calculating ------------------------------------- | |
old_filter(N=20, K=4) | |
1266 i/100ms | |
filter(N=20, K=4) 2841 i/100ms | |
------------------------------------------------- | |
old_filter(N=20, K=4) | |
16595.4 (±13.5%) i/s - 81024 in 5.025667s | |
filter(N=20, K=4) 31738.5 (±2.2%) i/s - 159096 in 5.015250s | |
Comparison: | |
filter(N=20, K=4): 31738.5 i/s | |
old_filter(N=20, K=4): 16595.4 i/s - 1.91x slower | |
Calculating ------------------------------------- | |
old_filter(N=20, K=16) | |
2979 i/100ms | |
filter(N=20, K=16) 4133 i/100ms | |
------------------------------------------------- | |
old_filter(N=20, K=16) | |
35316.6 (±2.4%) i/s - 178740 in 5.064100s | |
filter(N=20, K=16) 45623.9 (±1.9%) i/s - 231448 in 5.074713s | |
Comparison: | |
filter(N=20, K=16): 45623.9 i/s | |
old_filter(N=20, K=16): 35316.6 i/s - 1.29x slower | |
Calculating ------------------------------------- | |
old_filter(N=50, K=10) | |
484 i/100ms | |
filter(N=50, K=10) 782 i/100ms | |
------------------------------------------------- | |
old_filter(N=50, K=10) | |
5203.6 (±2.5%) i/s - 26136 in 5.026036s | |
filter(N=50, K=10) 8014.6 (±1.3%) i/s - 40664 in 5.074627s | |
Comparison: | |
filter(N=50, K=10): 8014.6 i/s | |
old_filter(N=50, K=10): 5203.6 i/s - 1.54x slower | |
Calculating ------------------------------------- | |
old_filter(N=50, K=40) | |
1175 i/100ms | |
filter(N=50, K=40) 1516 i/100ms | |
------------------------------------------------- | |
old_filter(N=50, K=40) | |
12777.6 (±2.9%) i/s - 64625 in 5.062134s | |
filter(N=50, K=40) 16073.4 (±1.9%) i/s - 81864 in 5.095068s | |
Comparison: | |
filter(N=50, K=40): 16073.4 i/s | |
old_filter(N=50, K=40): 12777.6 i/s - 1.26x slower | |
Calculating ------------------------------------- | |
old_filter(N=100, K=20) | |
253 i/100ms | |
filter(N=100, K=20) 362 i/100ms | |
------------------------------------------------- | |
old_filter(N=100, K=20) | |
2573.4 (±1.8%) i/s - 12903 in 5.015683s | |
filter(N=100, K=20) 3679.0 (±1.2%) i/s - 18462 in 5.019007s | |
Comparison: | |
filter(N=100, K=20): 3679.0 i/s | |
old_filter(N=100, K=20): 2573.4 i/s - 1.43x slower | |
Calculating ------------------------------------- | |
old_filter(N=100, K=80) | |
680 i/100ms | |
filter(N=100, K=80) 859 i/100ms | |
------------------------------------------------- | |
old_filter(N=100, K=80) | |
6673.6 (±1.2%) i/s - 34000 in 5.095432s | |
filter(N=100, K=80) 8698.2 (±1.0%) i/s - 43809 in 5.037085s | |
Comparison: | |
filter(N=100, K=80): 8698.2 i/s | |
old_filter(N=100, K=80): 6673.6 i/s - 1.30x slower | |
Calculating ------------------------------------- | |
old_filter(N=1000, K=10) | |
15 i/100ms | |
filter(N=1000, K=10) 21 i/100ms | |
------------------------------------------------- | |
old_filter(N=1000, K=10) | |
156.7 (±1.9%) i/s - 795 in 5.074175s | |
filter(N=1000, K=10) 211.5 (±1.9%) i/s - 1071 in 5.065460s | |
Comparison: | |
filter(N=1000, K=10): 211.5 i/s | |
old_filter(N=1000, K=10): 156.7 i/s - 1.35x slower | |
Calculating ------------------------------------- | |
old_filter(N=1000, K=200) | |
19 i/100ms | |
filter(N=1000, K=200) | |
25 i/100ms | |
------------------------------------------------- | |
old_filter(N=1000, K=200) | |
192.8 (±2.6%) i/s - 969 in 5.030329s | |
filter(N=1000, K=200) | |
253.7 (±1.2%) i/s - 1275 in 5.025793s | |
Comparison: | |
filter(N=1000, K=200): 253.7 i/s | |
old_filter(N=1000, K=200): 192.8 i/s - 1.32x slower | |
Calculating ------------------------------------- | |
old_filter(N=1000, K=800) | |
52 i/100ms | |
filter(N=1000, K=800) | |
66 i/100ms | |
------------------------------------------------- | |
old_filter(N=1000, K=800) | |
541.2 (±1.7%) i/s - 2756 in 5.093704s | |
filter(N=1000, K=800) | |
672.0 (±1.2%) i/s - 3366 in 5.009657s | |
Comparison: | |
filter(N=1000, K=800): 672.0 i/s | |
old_filter(N=1000, K=800): 541.2 i/s - 1.24x slower | |
Calculating ------------------------------------- | |
old_filter(N=1000, K=990) | |
125 i/100ms | |
filter(N=1000, K=990) | |
137 i/100ms | |
------------------------------------------------- | |
old_filter(N=1000, K=990) | |
1282.4 (±1.2%) i/s - 6500 in 5.069462s | |
filter(N=1000, K=990) | |
1396.1 (±1.1%) i/s - 6987 in 5.005063s | |
Comparison: | |
filter(N=1000, K=990): 1396.1 i/s | |
old_filter(N=1000, K=990): 1282.4 i/s - 1.09x slower | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment