mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	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
This commit is contained in:
		
							parent
							
								
									b729e9278f
								
							
						
					
					
						commit
						cb87005f69
					
				
					 4 changed files with 35 additions and 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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										4
									
								
								benchmark/bm_hash_aref_dsym.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								benchmark/bm_hash_aref_dsym.rb
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -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] } }
 | 
			
		||||
							
								
								
									
										21
									
								
								benchmark/bm_hash_aref_dsym_long.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								benchmark/bm_hash_aref_dsym_long.rb
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -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
 | 
			
		||||
							
								
								
									
										4
									
								
								benchmark/bm_hash_aref_fix.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								benchmark/bm_hash_aref_fix.rb
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,4 @@
 | 
			
		|||
h = {}
 | 
			
		||||
nums = (1..26).to_a
 | 
			
		||||
nums.each { |i| h[i] = i }
 | 
			
		||||
200_000.times { nums.each { |s| h[s] } }
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue