Skip to content

Instantly share code, notes, and snippets.

@zacksiri
Last active August 29, 2015 13:57
Show Gist options
  • Save zacksiri/9594195 to your computer and use it in GitHub Desktop.
Save zacksiri/9594195 to your computer and use it in GitHub Desktop.
require 'benchmark'
class Selector
def initialize(key)
@key = key
end
def selector_if
if @key == :success
'alert-success'
elsif @key == :error
'alert-danger'
elsif @key == :warn
'alert-warning'
elsif @key == :info
'alert-info'
end
end
def selector_case
case @key
when :success then 'alert-success'
when :error then 'alert-danger'
when :warn then 'alert-warning'
when :info then 'alert-info'
end
end
ALERT_COLORS = { success: 'alert-success',
error: 'alert-danger',
notice: 'alert-info',
warn: 'alert-warning' }
def selector_hash_cached
ALERT_COLORS[@key]
end
def selector_hash
{ success: 'alert-success',
error: 'alert-danger',
notice: 'alert-info',
warn: 'alert-warning' }[@key]
end
end
Benchmark.bm(25) do |x|
x.report("if") {
1000000.times do
selector = Selector.new([:success, :error, :notice, :warn].sample)
selector.selector_if
end
}
x.report("case") {
1000000.times do
selector = Selector.new([:success, :error, :notice, :warn].sample)
selector.selector_case
end
}
x.report("hash_select_cached") {
1000000.times do
selector = Selector.new([:success, :error, :notice, :warn].sample)
selector.selector_hash_cached
end
}
x.report("hash_select") {
1000000.times do
selector = Selector.new([:success, :error, :notice, :warn].sample)
selector.selector_hash
end
}
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment