Actions
Feature #9590
openintroduce st_foreach_update and st_foreach_update_check for performance.
Description
Hello,
I think I'll introduce st_foreach_update and st_foreach_update_check for performance.
For example, it is effective at Hash's rehash,dup and clone. (included in patch)
Are there any problem?
Patch is at https://gist.github.com/tarui/9345180 and attached here.
Some benchmarks are shown below.
$cat test.rb require 'benchmark' N=10**6 a={} Benchmark.bm(8) do |x| x.report("create") { N.times{|i| a[i] = i} } x.report("rehash") { a.rehash } x.report("dup") { a.dup } x.report("clone") { a.clone } end $ original_ruby test.rb user system total real create 0.730000 0.050000 0.780000 ( 0.788674) rehash 1.030000 0.080000 1.110000 ( 1.113006) dup 1.120000 0.050000 1.170000 ( 1.175618) clone 1.300000 0.010000 1.310000 ( 1.312528) $ proposed_ruby test.rb user system total real create 0.710000 0.050000 0.760000 ( 0.758993) rehash 0.020000 0.000000 0.020000 ( 0.018409) dup 0.130000 0.050000 0.180000 ( 0.182608) clone 0.500000 0.000000 0.500000 ( 0.509430) $ make gcbench-rdoc | tail -n8|head -n2 original_ruby: user system total real 159.630000 2.870000 162.500000 (163.414495) proposed_ruby: user system total real 152.920000 2.730000 155.650000 (156.040741)
Files
Actions
Like0
Like0Like0Like0Like0Like0Like0