diff options
author | normal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-07-29 19:54:12 +0000 |
---|---|---|
committer | normal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-07-29 19:54:12 +0000 |
commit | cb87005f6966b334cc8cacc0d3dcd082b4cad569 (patch) | |
tree | c469f1e0355fb38f44a476633eebfe00f5d4a358 | |
parent | b729e9278fcf79628bb61107b2deebed6a7c834e (diff) | |
download | ruby-cb87005f6966b334cc8cacc0d3dcd082b4cad569.tar.gz |
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.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51435 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | benchmark/bm_hash_aref_dsym.rb | 4 | ||||
-rw-r--r-- | benchmark/bm_hash_aref_dsym_long.rb | 21 | ||||
-rw-r--r-- | benchmark/bm_hash_aref_fix.rb | 4 |
4 files changed, 35 insertions, 0 deletions
@@ -1,3 +1,9 @@ +Thu Jul 30 04:29:25 2015 Eric Wong <e@80x24.org> + + * 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@ruby-lang.org> * hash.c (any_hash), symbol.c (dsymbol_alloc): fix dynamic symbol diff --git a/benchmark/bm_hash_aref_dsym.rb b/benchmark/bm_hash_aref_dsym.rb new file mode 100644 index 0000000000..af4f8c36d4 --- /dev/null +++ b/benchmark/bm_hash_aref_dsym.rb @@ -0,0 +1,4 @@ +h = {} +syms = ('a'..'z').map { |s| s.to_sym } +syms.each { |s| h[s] = 1 } +200_000.times { syms.each { |s| h[s] } } diff --git a/benchmark/bm_hash_aref_dsym_long.rb b/benchmark/bm_hash_aref_dsym_long.rb new file mode 100644 index 0000000000..9d7759379e --- /dev/null +++ b/benchmark/bm_hash_aref_dsym_long.rb @@ -0,0 +1,21 @@ +# [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 diff --git a/benchmark/bm_hash_aref_fix.rb b/benchmark/bm_hash_aref_fix.rb new file mode 100644 index 0000000000..1346890582 --- /dev/null +++ b/benchmark/bm_hash_aref_fix.rb @@ -0,0 +1,4 @@ +h = {} +nums = (1..26).to_a +nums.each { |i| h[i] = i } +200_000.times { nums.each { |s| h[s] } } |