Skip to content

Instantly share code, notes, and snippets.

@13k
Last active August 29, 2015 14:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save 13k/46662d1d048be1f34c36 to your computer and use it in GitHub Desktop.
Save 13k/46662d1d048be1f34c36 to your computer and use it in GitHub Desktop.
require "benchmark/ips"
state1 = :initial
state2 = "initial"
Benchmark.ips do |x|
x.report("<Symbol> => (<String>, <Symbol>)") do
case state1
when "initial", :initial
a = 1
else
a = 2
end
end
x.report("<Symbol> => (<Symbol>, <String>)") do
case state1
when :initial, "initial"
a = 1
else
a = 2
end
end
x.report("<String> => (<String>, <Symbol>)") do
case state2
when "initial", :initial
a = 1
else
a = 2
end
end
x.report("<String> => (<Symbol>, <String>)") do
case state2
when :initial, "initial"
a = 1
else
a = 2
end
end
x.report("<Symbol>.to_s => (<String>, <Symbol>)") do
case state1.to_s
when "initial", :initial
a = 1
else
a = 2
end
end
x.report("<Symbol>.to_s => (<Symbol>, <String>)") do
case state1.to_s
when :initial, "initial"
a = 1
else
a = 2
end
end
x.report("<String>.to_sym => (<String>, <Symbol>)") do
case state2.to_sym
when "initial", :initial
a = 1
else
a = 2
end
end
x.report("<String>.to_sym => (<Symbol>, <String>)") do
case state2.to_sym
when :initial, "initial"
a = 1
else
a = 2
end
end
end
Calculating -------------------------------------
<Symbol> => (<String>, <Symbol>)
74453 i/100ms
<Symbol> => (<Symbol>, <String>)
72922 i/100ms
<String> => (<String>, <Symbol>)
69175 i/100ms
<String> => (<Symbol>, <String>)
69552 i/100ms
<Symbol>.to_s => (<String>, <Symbol>)
57608 i/100ms
<Symbol>.to_s => (<Symbol>, <String>)
56134 i/100ms
<String>.to_sym => (<String>, <Symbol>)
61364 i/100ms
<String>.to_sym => (<Symbol>, <String>)
60929 i/100ms
-------------------------------------------------
<Symbol> => (<String>, <Symbol>)
5759613.5 (±21.2%) i/s - 27249798 in 5.011084s
<Symbol> => (<Symbol>, <String>)
5739427.9 (±20.7%) i/s - 27272828 in 5.005634s
<String> => (<String>, <Symbol>)
4124374.2 (±19.2%) i/s - 19784050 in 5.011632s
<String> => (<Symbol>, <String>)
4136960.2 (±19.5%) i/s - 19752768 in 5.000195s
<Symbol>.to_s => (<String>, <Symbol>)
2675549.2 (±18.7%) i/s - 12904192 in 5.017881s
<Symbol>.to_s => (<Symbol>, <String>)
2656961.9 (±17.9%) i/s - 12854686 in 5.016062s
<String>.to_sym => (<String>, <Symbol>)
3368770.7 (±19.7%) i/s - 16138732 in 5.009987s
<String>.to_sym => (<Symbol>, <String>)
3422990.3 (±18.9%) i/s - 16450830 in 5.008404s
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment