[ruby-core:80424] [Ruby trunk Bug#13374] Fix one of performance regressions in method calling

From: watson1978@...
Date: 2017-03-28 08:31:39 UTC
List: ruby-core #80424
Issue #13374 has been reported by watson1978 (Shizuo Fujita).

----------------------------------------
Bug #13374: Fix one of performance regressions in method calling
https://bugs.ruby-lang.org/issues/13374

* Author: watson1978 (Shizuo Fujita)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: 
* Backport: 2.2: UNKNOWN, 2.3: UNKNOWN, 2.4: UNKNOWN
----------------------------------------
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



-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>

In This Thread

Prev Next