要約
ZJIT の制御・情報取得のためのモジュールです。
ZJIT は CRuby に組み込まれたメソッド単位の JIT (Just-in-time compiler) コンパイラで、 Ruby 4.0 で実験的機能として導入されました。Ruby 4.0 の時点ではインタプリタより速いものの RubyVM::YJIT ほど速くはなく、本番環境での利用は推奨されていません。
有効化するには以下のいずれかの方法を使います。
- コマンドラインオプション
--zjit - RubyVM::ZJIT.enable による実行時の有効化
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
- [PARAM]
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 # => trueJIT の有効・無効はビルドオプションや実行環境に依存するため、実行結果は環境によって異なります。
[SEE_ALSO] RubyVM::ZJIT.enabled?, RubyVM::YJIT.enable
enabled? -> boolRuby 4.0 から[permalink][rdoc][edit]-
ZJIT が有効かどうかを返します。
RubyVM::ZJIT.enabled? # => falseJIT の有効・無効はコマンドラインオプションなど実行環境に依存するため、実行結果は環境によって異なります。
[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!
- [PARAM]
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)が有効かどうかを返します。