Created
November 6, 2014 23:16
-
-
Save Mistobaan/38e467f9f3f9a9f4aa67 to your computer and use it in GitHub Desktop.
ruby include benchmark string vs symbols
This file contains hidden or 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
require 'benchmark' | |
require 'set' | |
# an attempted to remove the .freeze everywhere | |
class String | |
alias :f :freeze | |
end | |
n = 20000000 | |
item_available_states = ['sold_out', 'on_hold', 'not_yet_available'] | |
item_available_states_freezed = ['sold_out', 'on_hold', 'not_yet_available'].freeze | |
item_available_states_sym = [:sold_out, :on_hold, :not_yet_available] | |
item_available_states_sym_freezed = [:sold_out, :on_hold, :not_yet_available].freeze | |
item_available_states_sym_set = [:sold_out, :on_hold, :not_yet_available].to_set | |
item_available_states_sym_set_freezed = [:sold_out, :on_hold, :not_yet_available].to_set.freeze | |
sold_out = "sold_out".freeze | |
Benchmark.bmbm do |x| | |
x.report("Test ruby array.includes?(str)") do | |
n.times do | |
item_available_states.include?("sold_out") | |
end | |
end | |
x.report("Test ruby array_str_freezed.includes?(str)") do | |
n.times do | |
item_available_states_freezed.include?("sold_out") | |
end | |
end | |
x.report("Test ruby array_str_freezed.include?(str_freezed)") do | |
n.times do | |
item_available_states_freezed.include?(sold_out) | |
end | |
end | |
x.report("Test ruby array_sym_set.include?(sym)") do | |
n.times do | |
item_available_states_sym_set.include?(:sold_out) | |
end | |
end | |
x.report("Test ruby array_sym_set_freezed.include?(sym)") do | |
n.times do | |
item_available_states_sym_set_freezed.include?(:sold_out) | |
end | |
end | |
x.report("Test ruby array_sym.include?(sym)") do | |
n.times do | |
item_available_states_sym.include?(:sold_out) | |
end | |
end | |
x.report("Test ruby array_sym_freezed.include?(sym)") do | |
n.times do | |
item_available_states_sym_freezed.include?(:sold_out) | |
end | |
end | |
end |
Author
Mistobaan
commented
Nov 6, 2014
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment