[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]