このセクションでは、ボトルネックを特定するための Rspack のプロファイリング方法について説明します。Rspack が時間を費やしている場所を調べることで、パフォーマンスを向上させる方法についての洞察を得ることができます。プロファイラにはそれぞれ長所と短所があるため、複数を使用することが推奨されます。
Rspack のインストルメンテーションには tracing
が使用されます。
サポートされているトレースレベル:
INFO
、WARN
、ERROR
TRACE
、DEBUG
、INFO
、WARN
、ERROR
トレースを有効にする方法:2通りあります
@rspack/cli
を使用している場合、RSPACK_PROFILE
環境変数で有効にできます。@rspack/cli
を使用せずに @rspack/core
を使用している場合、rspack.experiments.globalTrace.register
と rspack.experiments.globalTrace.cleanup
で有効にできます。詳細については、@rspack/cli
でこれらの2つの関数を使用して RSPACK_PROFILE
を実装する方法を参照してください。トレース情報をグラフィカルに表示するには、tracing-chrome
がサポートされています。
例として、Rspack を実行する前に環境変数 RSPACK_PROFILE=TRACE=layer=chrome
を設定します。
これにより、現在の作業ディレクトリにトレースファイル(.rspack-profile-${timestamp}-${pid}/trace.json
)が生成されます。
JSON トレースファイルは、chrome://tracing
または ui.perfetto.dev で表示できます。
例として、RSPACK_PROFILE=TRACE=layer=logger
を使用すると、詳細なトレースイベント値をターミナルで表示できます。
これにより、Rspack に渡されたオプションと、個々のトレースイベントが出力されます。
パフォーマンスのボトルネックがJS側にある場合(例:jsローダー)、JS側をさらに分析する必要があります。Node.jsプロファイリングを使用して分析できます。例:
または
これにより、CPU.20230522.154658.14577.0.001.cpuprofile
のようなCPUプロファイルが生成され、speedscopeを使用してプロファイルを見ることができます。例:
ローダーとプラグインの処理時間、またはローダーのコンパイル動作を分析する場合は、Rsdoctor を使用して確認できます。
Rsdoctor コンパイル分析 を参照してください。
Mac を使用している場合は、Xcode Instruments を使用して CPU プロファイルを作成できます。
Xcode Instruments をインストールするには、コマンドラインツールをインストールするだけです。
通常の Rust ビルドの場合、cargo instruments
をプロファイリングとトレースファイル作成のつなぎとして使用できます。
Rspack のビルドには時間がかかるため、cargo instruments
を呼び出さずに次の手順を使用できます。効果は同じです。
ワークスペースルートの Cargo.toml
で、[profile.release]
セクションでデバッグシンボルを有効にし、シンボルストリッピングを無効にします。
プロジェクトをビルドします。
プロジェクトがビルドされると、最終的なバイナリは packages/rspack-cli/bin/rspack
に配置されます。
内部的には、cargo instruments
は xcrun
コマンドを呼び出します。つまり、Rspack を使用する独自のプロジェクトで次のコマンドを実行できます。
次の出力が生成されます。
トレースファイルは次のように開くことができます。