Railsの高速化に貢献する新たなJITコンパイラを搭載したRuby 3.1プレビュー1が公開
Ruby開発チームは、新たなJITコンパイラであるYJITを実験的に搭載したRuby 3.1プレビュー1を公開しました。
Ruby言語は以前から実行速度の向上を重要な改善項目として挙げており、Ruby 2.6では「MJIT」と呼ばれるJITコンパイラを搭載、昨年リリースされたRuby 3.0では目標としていたRuby 2の3倍の性能を達成しています。
参考:Ruby 3.0正式版リリース。「Ruby 2の3倍速」到達、型の記述、スレッドセーフな並列処理など新機能
一方でMJITはその機構上、Railsの大規模アプリケーションなどでの性能向上に十分な効果が発揮できていないとの評価もありました。
今回Ruby 3.1プレビューでマージされたのは、ECサイト構築サービスで知られるShopifyが開発を進めてきた「YJIT」と呼ばれるJITコンパイラです。
YJITは現在のところ20%から40%程度の高速化を実現
Shopifyは同社が提供する大規模なECサイト構築サービスでRailsを大規模に利用しているとされています。
YJITはこうした大規模なRailsアプリケーションでの性能向上を目指して開発されているJITコンパイラです。
YJITを紹介したShopifyのブログ「YJIT: Building a New JIT Compiler for CRuby」で、YJITの性能が次のように紹介されています(同ブログの日本語訳をTechRachoの記事が公開しています)
According to our set of benchmarks, we’ve achieved speedups over the CRuby interpreter of 20% on railsbench, 39% on liquid template rendering, and 37% on activerecord. YJIT also delivers very fast warm up. It reaches near-peak performance after a single iteration of any benchmark and performs at least as well as the interpreter on every benchmark, even on the first iteration.
一連のベンチマーク結果によると、CRubyインタプリタ(訳注:Ruby標準のインタプリタ)と比較してrailsbenchで20%、liquidテンプレートレンダリングで39%、Active Recordで37%のスピードアップを達成しています。YJITはまた、ウォームアップが非常に高速です。どのベンチマークでも1回のイテレーションでほぼピーク性能に到達し、イテレーションの初回であってもすべてのベンチマークでインタプリタと同等以上のパフォーマンスを達成しています。
YJITはまだすぐに正式版とならないかもしれませんが、Railsアプリケーションの高速化は多くのユーザーが早期実現を待っているはずです。
Rubyは毎年クリスマスの時期に新バージョンを公開しています。今年もおそらくクリスマス時期にRuby 3.1正式版が登場することでしょう。
あわせて読みたい
マイクロソフト、Excel関数ベースのローコード言語「Power Fx」をオープンソースで公開。さまざまなソフトウェアでの採用が可能に
≪前の記事
Cloudflare、CDNエッジからMySQLやPostgreSQLへ接続を可能にする「Relational Database Connectors」発表