From: watson1978@... Date: 2017-03-28T08:31:39+00:00 Subject: [ruby-core:80424] [Ruby trunk Bug#13374] Fix one of performance regressions in method calling 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: