Actions
Bug #13861
closedPerformance regressoion in Hash literal in Ruby 2.5.0-dev
Bug #13861:
Performance regressoion in Hash literal in Ruby 2.5.0-dev
Status:
Third Party's Issue
Assignee:
-
Target version:
-
ruby -v:
ruby 2.5.0dev (2017-09-02 trunk 59626) [x86_64-linux]
Description
Seems Ruby 2.5.0-dev has performance regressoion in Hash literal.
I've confirmed it with below benchmark script
Hash literal performance -> 35.7 % slow down since Ruby 2.4.1
Environment¶
- Ubuntu 17.04
- gcc version 7.0.1
Ruby 2.5.0-dev¶
$ ./miniruby -v -Ilib -I../benchmark-ips/lib ~/tmp/bench.rb
ruby 2.5.0dev (2017-09-02 trunk 59626) [x86_64-linux]
/home/watson/tmp/bench.rb:7: warning: assigned but unused variable - hash
/home/watson/tmp/bench.rb:15: warning: assigned but unused variable - string
Warming up --------------------------------------
Hash 93.650k i/100ms
String 226.366k i/100ms
Calculating -------------------------------------
Hash 1.713M (± 0.2%) i/s - 8.616M in 5.030997s
String 16.477M (± 0.1%) i/s - 82.397M in 5.000892s
Ruby 2.4.1¶
$ ruby -v -Ilib -I../benchmark-ips/lib ~/tmp/bench.rb
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]
/home/watson/tmp/bench.rb:7: warning: assigned but unused variable - hash
/home/watson/tmp/bench.rb:15: warning: assigned but unused variable - string
Warming up --------------------------------------
Hash 117.135k i/100ms
String 259.608k i/100ms
Calculating -------------------------------------
Hash 2.663M (± 0.3%) i/s - 13.353M in 5.014087s
String 17.259M (± 0.2%) i/s - 86.449M in 5.009036s
Benchmark code¶
require 'benchmark/ips'
Benchmark.ips do |x|
x.report "Hash" do |loop|
count = 0
while count < loop
hash = {foo: 12, bar: 34, baz: 56}
count += 1
end
end
x.report "String" do |loop|
count = 0
while count < loop
string = "hello world"
count += 1
end
end
end
Files
Actions