Actions
Feature #13374
openFix one of performance regressions in method calling
    Feature #13374:
    Fix one of performance regressions in method calling
  
Status:
Open
Assignee:
-
Target version:
-
Description
Seems that LIKELY() introduces some penalties at branching.
Ruby 2.4.1¶
$ ruby -v ~/tmp/bench.rb
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-darwin16]
       user     system      total        real
   1.460000   0.010000   1.470000 (  1.462540)
Ruby trunk without patch¶
$ ./miniruby -v -Ilib ~/tmp/bench.rb
ruby 2.5.0dev (2017-03-28 trunk 58156) [x86_64-darwin16]
       user     system      total        real
   1.580000   0.000000   1.580000 (  1.579428)
Ruby trunk with patch¶
$ ./miniruby -v -Ilib ~/tmp/bench.rb
ruby 2.5.0dev (2017-03-28 trunk 58156) [x86_64-darwin16]
       user     system      total        real
   1.510000   0.000000   1.510000 (  1.505948)
Test code¶
require 'benchmark'
Benchmark.bm do |x|
  ary = [1,2,3]
  x.report do
    20000000.times do
      ary.at(2)
    end
  end
end
Patch¶
Actions