@ledsun blog

無味の味は佳境に入らざればすなわち知れず

How fast really is Ruby 3.x?

rubykaigi.org

GitHub - fluent/fluentd: Fluentd: Unified Logging Layer (project under CNCF) のメンテナの方が、Ruby 3でどれぐらい速く動くようになったか計測した話です。 fluentdでは1秒間に1万オブジェクトを作ることもあるそうです。 オブジェクト生成ならObject Shapesの効果ですね。

1000万行のログを読ませて、パースに掛かった時間を測ったそうです。 CPUバウンドな処理のようです。 JITは効くみたいですが10%程度だったみたいです。 同じ処理を繰り返す小さいプログラムはJIT効きそうなイメージがあります。 ただ、実際にはプログラムによって効いたり効かなかったりするのが不思議です。 JITの気持ちがわかりません。

Pythonより大幅に遅いという衝撃的なグラフが見られました。

こちらのツイートによると、どうやらGCに時間が掛かっているようです。 なるほど。大量のオブジェクトを生成した分、大量のオブジェクトを破棄しないといけないのかもしれません。

Ractorも試したかったけどPluginが動かなくなったという話も面白かったです。 ですよね。Pluginシステムはアーキテクチャが多きく変わると難しいですよね。

GitHub - fujimotos/RubyKaigi2022: RubyKaigi 2022 resources にて、発表資料や計測に使ったスクリプトが公開されています。

2022/09/18 追記

twitter.com

このベンチマークはTruffleRubyだと速く動くのだそうです。