Ruby 4.0 リファレンスマニュアル

module RubyVM::ZJIT

[edit]

要約

ZJIT の制御・情報取得のためのモジュールです。

ZJIT は CRuby に組み込まれたメソッド単位の JIT (Just-in-time compiler) コンパイラで、 Ruby 4.0 で実験的機能として導入されました。Ruby 4.0 の時点ではインタプリタより速いものの RubyVM::YJIT ほど速くはなく、本番環境での利用は推奨されていません。

有効化するには以下のいずれかの方法を使います。

YJIT と ZJIT を同時に有効にすることはできません。

このモジュールは、ZJIT が対応していないプラットフォームや、ZJIT を含めずにビルドされた Ruby (ビルドには Rust 1.85.0 以降が必要です)では定義されません。このモジュールの内容は処理系の実装に強く依存し、標準ライブラリと比べて API が安定していない可能性があります。

[SEE_ALSO] RubyVM::YJIT

目次

特異メソッド

特異メソッド

dump_exit_locations(filename) -> IntegerRuby 4.0 から Ruby 4.1 で削除[permalink][rdoc][edit]

--zjit-trace-exits を指定して収集した、サイドイグジットが発生した位置の情報を Marshal 形式で filename にダンプします。ダンプしたファイルは Stackprof で読み込んで解析できます。

[PARAM] filename:
ダンプ先のファイル名。
[RETURN]
ファイルに書き込んだバイト数を返します。
[EXCEPTION] ArgumentError:
--zjit-trace-exits が有効になっていない場合に発生します。

[SEE_ALSO] RubyVM::ZJIT.exit_locations

enable -> boolRuby 4.0 から[permalink][rdoc][edit]

実行時に ZJIT を有効化します。

[RETURN]
有効化したときは true を返します。すでに ZJIT が有効な場合は false を返します。 YJIT が有効になっている場合は "Only one JIT can be enabled at the same time." という警告を出力して false を返します。
RubyVM::ZJIT.enable # => true

JIT の有効・無効はビルドオプションや実行環境に依存するため、実行結果は環境によって異なります。

[SEE_ALSO] RubyVM::ZJIT.enabled?, RubyVM::YJIT.enable

enabled? -> boolRuby 4.0 から[permalink][rdoc][edit]

ZJIT が有効かどうかを返します。

RubyVM::ZJIT.enabled? # => false

JIT の有効・無効はコマンドラインオプションなど実行環境に依存するため、実行結果は環境によって異なります。

[SEE_ALSO] RubyVM::ZJIT.enable

exit_locations -> Hash | nilRuby 4.0 から Ruby 4.1 で削除[permalink][rdoc][edit]

--zjit-trace-exits を指定して収集した、サイドイグジットが発生した位置の情報を Stackprof で読める形式のハッシュにして返します。

--zjit-trace-exits が有効になっていない場合は nil を返します。

[SEE_ALSO] RubyVM::ZJIT.dump_exit_locations

reset_stats! -> nilRuby 4.0 から[permalink][rdoc][edit]

--zjit-stats で収集した統計情報を破棄します。

ZJIT が有効なときにだけ呼び出してください。

[SEE_ALSO] RubyVM::ZJIT.stats

stats(target_key = nil) -> Hash | object | nilRuby 4.0 から[permalink][rdoc][edit]

ZJIT の統計情報を返します。

--zjit-stats で統計収集を有効にしている場合、統計情報のカウンタ名をキーとするハッシュを返します。 target_key を指定した場合は、そのキーに対応する値だけを返します(該当するキーが無ければ nil)。統計収集が有効でない場合は nil を返します。

[PARAM] target_key:
取得したい統計情報のキーをシンボルで指定します。
# ruby --zjit-stats で実行した場合
RubyVM::ZJIT.stats.keys.first(3)  # => [:compiled_iseq_count, :failed_iseq_count, :compile_time_ns]
RubyVM::ZJIT.stats(:compiled_iseq_count) # => 12

統計情報のキーの構成は処理系のバージョンによって変わります。

[SEE_ALSO] RubyVM::ZJIT.stats_string, RubyVM::ZJIT.reset_stats!

stats_enabled? -> boolRuby 4.0 から[permalink][rdoc][edit]

統計収集(--zjit-stats)が有効かどうかを返します。

[SEE_ALSO] RubyVM::ZJIT.stats

stats_string -> String | nilRuby 4.0 から[permalink][rdoc][edit]

ZJIT の統計情報の要約を、--zjit-stats で終了時に表示されるのと同じ形式の文字列で返します。

統計収集が有効でない場合は nil を返します。

[SEE_ALSO] RubyVM::ZJIT.stats

trace_exit_locations_enabled? -> boolRuby 4.0 から[permalink][rdoc][edit]

サイドイグジット(exit)の発生位置の収集(--zjit-trace-exits)が有効かどうかを返します。