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

あわせて読みたい

プログラミング言語 Ruby




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

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

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

最新記事10本