Skip to content

Instantly share code, notes, and snippets.

@asterite
Last active August 29, 2015 13:57
Show Gist options
  • Save asterite/9667066 to your computer and use it in GitHub Desktop.
Save asterite/9667066 to your computer and use it in GitHub Desktop.
type = :info
time = Time.now
2_000_000.times do
msg = case type
when :success then 'alert-success'
when :error then 'alert-danger'
when :warn then 'alert-warning'
when :info then 'alert-info'
end
end
puts "case: #{Time.now - time}"
time = Time.now
2_000_000.times do
msg = if type == :success then 'alert-success'
elsif type == :error then 'alert-danger'
elsif type == :warn then 'alert-warning'
elsif type == :info then 'alert-info'
end
end
puts "if: #{Time.now - time}"
time = Time.now
2_000_000.times do
msg = { success: 'alert-success',
error: 'alert-danger',
notice: 'alert-info',
warn: 'alert-warning' }[type]
end
puts "hash: #{Time.now - time}"
@jasdeepsingh
Copy link

why allocate hash 2_000_000 times?

@CITguy
Copy link

CITguy commented Mar 21, 2014

Why would a single end user care if it took 2 million iterations to notice roughly a 0.15 second difference between a hash lookup vs a case statement? If the only noticeable difference is readability of the code, I'll stick with a case statement, thank you very much.

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