MacOSでのパフォーマンス向上:YJITを使ってRubyをインストールする
写真提供:Joshua FullerのUnsplashに掲載されたもの
画期的なJust-In-TimeコンパイラーであるYJITは、Rubyのアプリケーションのパフォーマンスを大幅に向上させます。ただし、YJITはデフォルトではRubyに有効になっていない点に留意する必要があります。心配はいりません。いくつかの簡単な手順を踏むだけで、MacOSシステムでYJITのパワーを活用することができます。
まず第一に、適切な設定オプションを用いてRubyを再ビルドすることが不可欠です。これには、--enable-yjit
フラグを使用する必要があります。さらに、YJITはrustc
に依存しているため、rustc
がインストールされていることを確認してください。
ruby-build
を活用しているユーザーの場合、環境変数を介してコンパイルオプションを簡単に取り入れることができます。これにより、アプリケーションが高速かつ効率的に実行されるよう、YJITをRuby環境にシームレスに統合することができます。
$ brew install rust
$ RUBY_CONFIGURE_OPTS="--enable-yjit" rbenv install 3.3.0
$ rbenv shell 3.3.0
$ ruby --yjit -v
ruby 3.3.0 (2023-12-25 revision 5124f9ac75) +YJIT [arm64-darwin23]
$ ruby --yjit -e "p RubyVM::YJIT.enabled?"
true
$ ruby -e "RubyVM::YJIT.enable; p RubyVM::YJIT.enabled?"
true
これらのシェルの命令は、追加でRustをインストールし、YJITを設定し、YJITサポート付きのRuby 3.3.0をインストールし、コマンドラインおよびRubyスクリプト内でYJITが有効になっているかどうかを確認するためのステップバイステップガイドを提供します。rustc
がインストールされたら、rubyはYJITが有効にビルドされるため、RUBY_CONFIGURE_OPTS
環境変数を指定する必要はなくなりますが、万が一依存関係が足りない場合に備えて、明確さのために含めています。
エキサイティングなことに、Ruby 3.3.0のリリースにより、コード(ランタイム)から直接YJITを有効にする新しい可能性があります。これにより、開発者はより大きな柔軟性と制御を得て、自分のニーズに合わせてRubyのセットアップを微調整することができます。
RubyVM::YJIT.enable if defined? RubyVM::YJIT.enable
最後に、これらの手順に従い、最新のRubyのアップデートに気をつけることで、アプリケーションの新しいパフォーマンスレベルを解き放つことが、直面なプロセスで大きな利益をもたらします。
参照資料
-
Ruby 3.3.0 Released
こちらの記事はdev.toの良い記事を日本人向けに翻訳しています。
https://dev.to/miry/unlocking-performance-installing-ruby-with-yjit-on-macos-3iei