mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
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
This commit is contained in:
parent
3cb3966838
commit
098b0ba572
3 changed files with 16 additions and 2 deletions
|
@ -1,3 +1,7 @@
|
|||
Thu Oct 9 12:40:28 2014 Eric Wong <e@80x24.org>
|
||||
|
||||
* benchmark/bm_hash_aref_sym*.rb: force static symbols
|
||||
|
||||
Thu Oct 9 12:38:28 2014 Eric Wong <e@80x24.org>
|
||||
|
||||
* hash.c (rb_any_hash): remove unnecessary dsym check
|
||||
|
|
|
@ -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] } }
|
||||
|
|
|
@ -3,6 +3,11 @@ syms = %w[puts warn syswrite write stat bacon lettuce tomato
|
|||
some symbols in this array may already be interned others should not be
|
||||
hash browns make good breakfast but not cooked using prime numbers
|
||||
shift for division entries delete_if keys exist?
|
||||
].map!(&:to_sym)
|
||||
]
|
||||
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] } }
|
||||
|
|
Loading…
Reference in a new issue