ruby-changes:39354
From: normal <ko1@a...>
Date: Thu, 30 Jul 2015 04:54:29 +0900 (JST)
Subject: [ruby-changes:39354] normal:r51435 (trunk): new benchmarks for hashing dsyms and fixnums
normal 2015-07-30 04:54:12 +0900 (Thu, 30 Jul 2015) New Revision: 51435 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=51435 Log: new benchmarks for hashing dsyms and fixnums * benchmark/bm_hash_aref_dsym.rb: new benchmark * benchmark/bm_hash_aref_dsym_long.rb: ditto * benchmark/bm_hash_aref_fix.rb: ditto [ruby-core:70129] [Bug #11396] pointed out we need to consider more cases for hashing. Added files: trunk/benchmark/bm_hash_aref_dsym.rb trunk/benchmark/bm_hash_aref_dsym_long.rb trunk/benchmark/bm_hash_aref_fix.rb Modified files: trunk/ChangeLog Index: ChangeLog =================================================================== --- ChangeLog (revision 51434) +++ ChangeLog (revision 51435) @@ -1,3 +1,9 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1 +Thu Jul 30 04:29:25 2015 Eric Wong <e@8...> + + * benchmark/bm_hash_aref_dsym.rb: new benchmark + * benchmark/bm_hash_aref_dsym_long.rb: ditto + * benchmark/bm_hash_aref_fix.rb: ditto + Wed Jul 29 21:38:41 2015 Nobuyoshi Nakada <nobu@r...> * hash.c (any_hash), symbol.c (dsymbol_alloc): fix dynamic symbol Index: benchmark/bm_hash_aref_dsym.rb =================================================================== --- benchmark/bm_hash_aref_dsym.rb (revision 0) +++ benchmark/bm_hash_aref_dsym.rb (revision 51435) @@ -0,0 +1,4 @@ https://github.com/ruby/ruby/blob/trunk/benchmark/bm_hash_aref_dsym.rb#L1 +h = {} +syms = ('a'..'z').map { |s| s.to_sym } +syms.each { |s| h[s] = 1 } +200_000.times { syms.each { |s| h[s] } } Index: benchmark/bm_hash_aref_dsym_long.rb =================================================================== --- benchmark/bm_hash_aref_dsym_long.rb (revision 0) +++ benchmark/bm_hash_aref_dsym_long.rb (revision 51435) @@ -0,0 +1,21 @@ https://github.com/ruby/ruby/blob/trunk/benchmark/bm_hash_aref_dsym_long.rb#L1 +# [ruby-core:70129] [Bug #11396] +collection_size = 200000 +sample_size = 10000 + +values = (1..collection_size).to_a.map do |x| + "THIS IS A LONGER STRING THAT IS ALSO UNIQUE #{x}" +end + +symbol_hash = {} + +values.each do |x| + symbol_hash[x.to_sym] = 1 +end + +# use the same samples each time to minimize deviations +rng = Random.new(0) +symbol_sample_array = values.sample(sample_size, random: rng).map(&:to_sym) + +3000.times do + symbol_sample_array.each { |x| symbol_hash[x] } +end Index: benchmark/bm_hash_aref_fix.rb =================================================================== --- benchmark/bm_hash_aref_fix.rb (revision 0) +++ benchmark/bm_hash_aref_fix.rb (revision 51435) @@ -0,0 +1,4 @@ https://github.com/ruby/ruby/blob/trunk/benchmark/bm_hash_aref_fix.rb#L1 +h = {} +nums = (1..26).to_a +nums.each { |i| h[i] = i } +200_000.times { nums.each { |s| h[s] } } -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/