Skip to content

Instantly share code, notes, and snippets.

@dubek
Created October 30, 2014 23:59
Show Gist options
  • Save dubek/b3232b91dff2d33ae948 to your computer and use it in GitHub Desktop.
Save dubek/b3232b91dff2d33ae948 to your computer and use it in GitHub Desktop.
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_difference(set_size)
puts
puts
puts
Benchmark.ips do |b|
set_a = Hamster::Set.new((1..set_size).to_a)
set_b = Hamster::Set.new(((set_size/2)..set_size).to_a)
b.report "old_difference(N=#{set_size})" do
set_a.old_difference(set_b)
end
b.report "difference(N=#{set_size})" do
set_a.difference(set_b)
end
b.compare!
end
end
benchmark_difference(10)
benchmark_difference(20)
benchmark_difference(50)
benchmark_difference(100)
benchmark_difference(1000)
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 <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [https://rvm.io/]
Hamster version: 1.0.1-rc3
Calculating -------------------------------------
old_difference(N=10) 4788 i/100ms
difference(N=10) 9341 i/100ms
-------------------------------------------------
old_difference(N=10) 53973.1 (±2.0%) i/s - 272916 in 5.058650s
difference(N=10) 107220.4 (±1.7%) i/s - 541778 in 5.054387s
Comparison:
difference(N=10): 107220.4 i/s
old_difference(N=10): 53973.1 i/s - 1.99x slower
Calculating -------------------------------------
old_difference(N=20) 2605 i/100ms
difference(N=20) 4302 i/100ms
-------------------------------------------------
old_difference(N=20) 25656.7 (±2.9%) i/s - 130250 in 5.081251s
difference(N=20) 46504.2 (±3.6%) i/s - 232308 in 5.002735s
Comparison:
difference(N=20): 46504.2 i/s
old_difference(N=20): 25656.7 i/s - 1.81x slower
Calculating -------------------------------------
old_difference(N=50) 831 i/100ms
difference(N=50) 1196 i/100ms
-------------------------------------------------
old_difference(N=50) 8514.3 (±2.2%) i/s - 43212 in 5.077861s
difference(N=50) 12121.6 (±0.8%) i/s - 60996 in 5.032350s
Comparison:
difference(N=50): 12121.6 i/s
old_difference(N=50): 8514.3 i/s - 1.42x slower
Calculating -------------------------------------
old_difference(N=100)
402 i/100ms
difference(N=100) 536 i/100ms
-------------------------------------------------
old_difference(N=100)
4024.9 (±1.2%) i/s - 20502 in 5.094563s
difference(N=100) 5441.3 (±1.3%) i/s - 27336 in 5.024606s
Comparison:
difference(N=100): 5441.3 i/s
old_difference(N=100): 4024.9 i/s - 1.35x slower
Calculating -------------------------------------
old_difference(N=1000)
34 i/100ms
difference(N=1000) 43 i/100ms
-------------------------------------------------
old_difference(N=1000)
342.2 (±1.5%) i/s - 1734 in 5.068383s
difference(N=1000) 438.4 (±1.4%) i/s - 2193 in 5.002825s
Comparison:
difference(N=1000): 438.4 i/s
old_difference(N=1000): 342.2 i/s - 1.28x slower
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment