summaryrefslogtreecommitdiff
path: root/benchmark/bm_hash_aref_sym.rb
diff options
context:
space:
mode:
authornormal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-10-09 03:44:12 +0000
committernormal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-10-09 03:44:12 +0000
commit098b0ba572d624acdc2af1925db7feda4b72881e (patch)
treea0e2bed56264ea86dece8996b81bc969911a4296 /benchmark/bm_hash_aref_sym.rb
parent3cb3966838601acf6490c30077f482dafe4db2d7 (diff)
benchmark/bm_hash_aref_sym*.rb: force static symbols
Dynamic symbols hash more slowly because they need extra method dispatch in rb_any_hash. I am not sure if dynamic symbols are a realistic use case as hash keys, so this commit only restores performance when comparing against versions of Ruby which lack dsyms. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47854 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'benchmark/bm_hash_aref_sym.rb')
-rw-r--r--benchmark/bm_hash_aref_sym.rb7
1 files changed, 6 insertions, 1 deletions
diff --git a/benchmark/bm_hash_aref_sym.rb b/benchmark/bm_hash_aref_sym.rb
index 54298ffc9e..f75d163fe6 100644
--- a/benchmark/bm_hash_aref_sym.rb
+++ b/benchmark/bm_hash_aref_sym.rb
@@ -1,4 +1,9 @@
h = {}
-syms = ('a'..'z').to_a.map(&:to_sym)
+syms = ('a'..'z').to_a
+begin
+ syms = eval("%i[#{syms.join(' ')}]")
+rescue SyntaxError # <= 1.9.3
+ syms.map!(&:to_sym)
+end
syms.each { |s| h[s] = s }
200_000.times { syms.each { |s| h[s] } }