Skip to content

Commit cb87005

Browse files
author
normal
committed
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 ruby#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
1 parent b729e92 commit cb87005

File tree

4 files changed

+35
-0
lines changed

4 files changed

+35
-0
lines changed

ChangeLog

+6
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
Thu Jul 30 04:29:25 2015 Eric Wong <[email protected]>
2+
3+
* benchmark/bm_hash_aref_dsym.rb: new benchmark
4+
* benchmark/bm_hash_aref_dsym_long.rb: ditto
5+
* benchmark/bm_hash_aref_fix.rb: ditto
6+
17
Wed Jul 29 21:38:41 2015 Nobuyoshi Nakada <[email protected]>
28

39
* hash.c (any_hash), symbol.c (dsymbol_alloc): fix dynamic symbol

benchmark/bm_hash_aref_dsym.rb

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
h = {}
2+
syms = ('a'..'z').map { |s| s.to_sym }
3+
syms.each { |s| h[s] = 1 }
4+
200_000.times { syms.each { |s| h[s] } }

benchmark/bm_hash_aref_dsym_long.rb

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# [ruby-core:70129] [Bug #11396]
2+
collection_size = 200000
3+
sample_size = 10000
4+
5+
values = (1..collection_size).to_a.map do |x|
6+
"THIS IS A LONGER STRING THAT IS ALSO UNIQUE #{x}"
7+
end
8+
9+
symbol_hash = {}
10+
11+
values.each do |x|
12+
symbol_hash[x.to_sym] = 1
13+
end
14+
15+
# use the same samples each time to minimize deviations
16+
rng = Random.new(0)
17+
symbol_sample_array = values.sample(sample_size, random: rng).map(&:to_sym)
18+
19+
3000.times do
20+
symbol_sample_array.each { |x| symbol_hash[x] }
21+
end

benchmark/bm_hash_aref_fix.rb

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
h = {}
2+
nums = (1..26).to_a
3+
nums.each { |i| h[i] = i }
4+
200_000.times { nums.each { |s| h[s] } }

0 commit comments

Comments
 (0)