【一人 bugs.ruby Advent Calendar 2020】[Bug #17101] YAML.load_file: Massive slowdown under Ruby 2.7 vs. Ruby 2.4【3日目】
一人 bugs.ruby Advent Calendar 2020 3日目の記事になります。
[Bug #17101] YAML.load_file: Massive slowdown under Ruby 2.7 vs. Ruby 2.4
この記事では YAML.load_file
の実行速度について言及されているチケットになります。
Ruby 2.4 と比べて Ruby 2.7 の実行速度がだいぶ遅いという報告がされています。
実際にコメントで以下のようなベンチマーク結果が報告されていて Ruby 2.4 と比べて Ruby 2.7 が遅いことがわかります。
sh@MyComputer:~/rubydev/bugs$ benchmark-driver yml.yaml --output compare --rbenv '2.4.4;2.5.8;2.6.6;2.7.1;2.8.0-dev' Calculating ------------------------------------- 2.4.4 2.5.8 2.6.6 2.7.1 2.8.0-dev load_file 0.113 0.075 0.076 0.058 0.134 i/s - 1.000 times in 8.839451s 13.406090s 13.240691s 17.256679s 7.435239s Comparison: load_file 2.8.0-dev: 0.1 i/s 2.4.4: 0.1 i/s - 1.19x slower 2.6.6: 0.1 i/s - 1.78x slower 2.5.8: 0.1 i/s - 1.80x slower 2.7.1: 0.1 i/s - 2.32x slower
確かに Ruby 2.4 と比較して Ruby 2.7 は遅いんですが実は Ruby 2.8 (3.0) の速度が一番はやいことがわかります。
つまり Ruby 2.7 では確かに遅いんですが Ruby 3.0 では YAML.load_file
はかなり高速化されており、このチケットの問題は解決されている、ということですね!
Ruby 2.7 ではめっちゃ遅くて Ruby 3.0 ではめっちゃ早くなっているという面白いチケットでした。