Actions
Feature #13374
openFix 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¶
Updated by watson1978 (Shizuo Fujita) over 7 years ago
When I filed this ticket, I tried to run benchmark on macOS + clang only.
Then, I tried to do on 2 environments in additional.
macOS 10.12 + gcc 6.3.0¶
Ruby 2.4.1¶
$ ./miniruby -v -Ilib ~/tmp/bench.rb
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-darwin16]
user system total real
1.310000 0.000000 1.310000 ( 1.314179)
Ruby trunk without patch¶
$ ./miniruby -v -Ilib ~/tmp/bench.rb
ruby 2.5.0dev (2017-03-28 trunk 58192) [x86_64-darwin16]
user system total real
1.360000 0.000000 1.360000 ( 1.361560)
Ruby trunk with all patches¶
$ ./miniruby -v -Ilib ~/tmp/bench.rb
ruby 2.5.0dev (2017-03-28 trunk 58192) [x86_64-darwin16]
user system total real
1.290000 0.000000 1.290000 ( 1.297583)
Ubuntu 16.04.4 + gcc 5.4.0¶
Ruby 2.4.1¶
$ ./miniruby -v -Ilib ~/bench/bench.rb
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]
user system total real
0.810000 0.000000 0.810000 ( 0.812250)
Ruby trunk without patch¶
$ ./miniruby -v -Ilib ~/bench/bench.rb
ruby 2.5.0dev (2017-03-28 trunk 58192) [x86_64-linux]
user system total real
0.830000 0.000000 0.830000 ( 0.824743)
Ruby trunk with all patches¶
$ ./miniruby -v -Ilib ~/bench/bench.rb
ruby 2.5.0dev (2017-03-28 trunk 58192) [x86_64-linux]
user system total real
0.830000 0.000000 0.830000 ( 0.826192)
Updated by jeremyevans0 (Jeremy Evans) over 5 years ago
- Tracker changed from Bug to Feature
- Backport deleted (
2.2: UNKNOWN, 2.3: UNKNOWN, 2.4: UNKNOWN)
Actions
Like0
Like0Like0