Created
October 22, 2014 17:09
-
-
Save dubek/979fd1bd74c0f80c2ce7 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/hash" | |
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_merges(hash_size) | |
puts | |
puts | |
puts | |
Benchmark.ips do |b| | |
keys_a = (1..hash_size).to_a | |
values_a = keys_a.map { |k| "a-#{k}" } | |
hash_a = Hamster.hash(keys_a.zip(values_a)) | |
keys_b = ((hash_size/2)..(hash_size*3/2)).to_a | |
values_b = keys_a.map { |k| "b-#{k}" } | |
hash_b = Hamster.hash(keys_b.zip(values_b)) | |
b.report "old_merge(N=#{hash_size})" do | |
hash_a.old_merge(hash_b) | |
end | |
b.report "merge(N=#{hash_size})" do | |
hash_a.merge(hash_b) | |
end | |
b.compare! | |
end | |
end | |
benchmark_merges(10) | |
benchmark_merges(20) | |
benchmark_merges(50) | |
benchmark_merges(100) | |
benchmark_merges(1000) |
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-rc2 | |
Calculating ------------------------------------- | |
old_merge(N=10) 2467 i/100ms | |
merge(N=10) 3668 i/100ms | |
------------------------------------------------- | |
old_merge(N=10) 24102.7 (±7.6%) i/s - 120883 in 5.048146s | |
merge(N=10) 36664.0 (±5.8%) i/s - 183400 in 5.020794s | |
Comparison: | |
merge(N=10): 36664.0 i/s | |
old_merge(N=10): 24102.7 i/s - 1.52x slower | |
Calculating ------------------------------------- | |
old_merge(N=20) 1175 i/100ms | |
merge(N=20) 1640 i/100ms | |
------------------------------------------------- | |
old_merge(N=20) 11590.7 (±11.2%) i/s - 57575 in 5.037649s | |
merge(N=20) 17729.1 (±7.7%) i/s - 88560 in 5.027350s | |
Comparison: | |
merge(N=20): 17729.1 i/s | |
old_merge(N=20): 11590.7 i/s - 1.53x slower | |
Calculating ------------------------------------- | |
old_merge(N=50) 403 i/100ms | |
merge(N=50) 542 i/100ms | |
------------------------------------------------- | |
old_merge(N=50) 4096.4 (±3.8%) i/s - 20553 in 5.026043s | |
merge(N=50) 5454.1 (±1.0%) i/s - 27642 in 5.068634s | |
Comparison: | |
merge(N=50): 5454.1 i/s | |
old_merge(N=50): 4096.4 i/s - 1.33x slower | |
Calculating ------------------------------------- | |
old_merge(N=100) 219 i/100ms | |
merge(N=100) 298 i/100ms | |
------------------------------------------------- | |
old_merge(N=100) 2237.3 (±2.0%) i/s - 11388 in 5.092143s | |
merge(N=100) 2983.3 (±1.2%) i/s - 15198 in 5.095135s | |
Comparison: | |
merge(N=100): 2983.3 i/s | |
old_merge(N=100): 2237.3 i/s - 1.33x slower | |
Calculating ------------------------------------- | |
old_merge(N=1000) 14 i/100ms | |
merge(N=1000) 18 i/100ms | |
------------------------------------------------- | |
old_merge(N=1000) 151.4 (±2.6%) i/s - 770 in 5.091162s | |
merge(N=1000) 185.3 (±2.7%) i/s - 936 in 5.053930s | |
Comparison: | |
merge(N=1000): 185.3 i/s | |
old_merge(N=1000): 151.4 i/s - 1.22x slower | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment