Skip to content

Instantly share code, notes, and snippets.

@vzvu3k6k
Last active August 29, 2015 13:58
Show Gist options
  • Save vzvu3k6k/10016989 to your computer and use it in GitHub Desktop.
Save vzvu3k6k/10016989 to your computer and use it in GitHub Desktop.
require 'benchmark'
def make_hash list
Hash[list.map { |k| [k, true] }]
end
TRY_NUM = 1000000
{
INDENT_KW: [:begin, :def, :case, :module, :class, :do, :for], # largest
PRE_OPTIONAL_DO_KW: [:in, :while, :until] # smallest
}.each do |name, array|
puts "-- #{name} --"
hash = make_hash array
Benchmark.bm do |x|
x.report("array") {
TRY_NUM.times do
array.each {|i| array.include? i}
end
}
x.report("hash") {
TRY_NUM.times do
array.each {|i| hash.include? i}
end
}
end
end
require 'benchmark'
def make_hash list
Hash[list.map { |k| [k, true] }]
end
TRY_NUM = 1000000
{
INDENT_KW: [:begin, :def, :case, :module, :class, :do, :for],
PRE_OPTIONAL_DO_KW: [:in, :while, :until]
}.each do |name, array|
Benchmark.bm do |x|
x.report(name) {
TRY_NUM.times do
make_hash array
end
}
end
end
@vzvu3k6k
Copy link
Author

vzvu3k6k commented Apr 7, 2014

bm.rb

-- INDENT_KW --
       user     system      total        real
array  4.210000   0.000000   4.210000 (  4.636992)
hash  2.440000   0.000000   2.440000 (  2.697857)
-- PRE_OPTIONAL_DO_KW --
       user     system      total        real
array  1.350000   0.010000   1.360000 (  1.498218)
hash  1.130000   0.000000   1.130000 (  1.248647)

make_hash_bm.rb

       user     system      total        real
INDENT_KW 11.450000   0.020000  11.470000 ( 12.964821)
       user     system      total        real
PRE_OPTIONAL_DO_KW  3.650000   0.010000   3.660000 (  4.102991)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment