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 allocate hash 2_000_000
times?
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
Darwin Kernel Version 13.1.0: Thu Jan 16 19:40:37 PST 2014; root:xnu-2422.90.20~2/RELEASE_X86_64 x86_64 i386 MacBookPro11,3 Darwin
jruby 1.7.10 (1.9.3p392) 2014-01-09 c4ecd6b on Java HotSpot(TM) 64-Bit Server VM 1.7.0_45-b18 [darwin-x86_64]