Project

General

Profile

« Previous | Next » 

Revision 9cd66d70

Added by watson1978 (Shizuo Fujita) over 8 years ago

Improve Hash#merge performance

  • hash.c (rb_hash_merge): use rb_hash_dup() instead of rb_obj_dup() to duplicate
    Hash object. rb_hash_dup() is faster duplicating function for Hash object
    which got rid of Hash#initialize_dup method calling.

    Hash#merge will be faster around 60%.
    [ruby-dev:50026] [Bug #13343] [Fix GH-1533]

Before

 user system total real 

Hash#merge 0.160000 0.020000 0.180000 ( 0.182357)

After

 user system total real 

Hash#merge 0.110000 0.010000 0.120000 ( 0.114404)

Test code

require 'benchmark'

Benchmark.bmbm do |x|
hash1 = {}
100.times { |i| hash1[i.to_s] = i }
hash2 = {}
100.times { |i| hash2[(i2).to_s] = i2 }

x.report "Hash#merge" do
10000.times do
hash1.merge(hash2)
end
end
end

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58811 b2dd03c8-39d4-4d8f-98ff-823fe69b080e