Railsの高速化に貢献する新たなJITコンパイラを搭載したRuby 3.1プレビュー1が公開

2021年11月18日

Ruby開発チームは、新たなJITコンパイラであるYJITを実験的に搭載したRuby 3.1プレビュー1を公開しました

fig

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正式版が登場することでしょう。

このエントリーをはてなブックマークに追加
follow us in feedly




カテゴリ

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed


最新記事10本