Project

General

Profile

Actions

Feature #13374

open

Fix one of performance regressions in method calling

Added by watson1978 (Shizuo Fujita) about 7 years ago. Updated almost 5 years ago.

Status:
Open
Assignee:
-
Target version:
-
[ruby-core:80424]

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

https://github.com/ruby/ruby/pull/1556

Actions

Also available in: Atom PDF

Like0
Like0Like0