Last active
August 29, 2015 13:57
-
-
Save asterite/9667066 to your computer and use it in GitHub Desktop.
This file contains 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
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}" |
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
why allocate hash
2_000_000
times?