Skip to content

Instantly share code, notes, and snippets.

@stokarenko
Last active January 30, 2018 10:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save stokarenko/764536afe65b792bbbbfcfc5842bd69b to your computer and use it in GitHub Desktop.
Save stokarenko/764536afe65b792bbbbfcfc5842bd69b to your computer and use it in GitHub Desktop.
require 'benchmark'
require 'benchmark/ips'
seed = [1,2,3]
map_proc = ->(i){ [i,i] }
Benchmark.ips do |x|
x.report('inject') { seed.inject({}){ |mem, i| mem[i]=i; mem } }
x.report('to_h') { seed.map(&map_proc).to_h }
x.report('Hash[map]') { Hash[seed.map(&map_proc)] }
x.report('Hash[*flat_map]') { Hash[*seed.flat_map(&map_proc)] }
x.report('lazy.to_h') { seed.lazy.map(&map_proc).to_h }
end
Warming up --------------------------------------
inject 74.295k i/100ms
to_h 78.415k i/100ms
Hash[map] 73.396k i/100ms
Hash[*flat_map] 55.862k i/100ms
lazy.to_h 14.441k i/100ms
Calculating -------------------------------------
inject 946.430k (± 3.0%) i/s - 4.755M in 5.029162s
to_h 970.956k (± 3.5%) i/s - 4.862M in 5.013636s
Hash[map] 894.628k (± 4.6%) i/s - 4.477M in 5.016057s
Hash[*flat_map] 644.230k (± 3.9%) i/s - 3.240M in 5.037430s
lazy.to_h 149.488k (± 2.2%) i/s - 750.932k in 5.025786s
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment