このセクションでは、ボトルネックを特定するための Rspack のプロファイリング方法について説明します。Rspack が時間を費やしている場所を調べることで、パフォーマンスを向上させる方法についての洞察を得ることができます。プロファイラにはそれぞれ長所と短所があるため、複数を使用することが推奨されます。
Rspack のインストルメンテーションには tracing が使用されます。
サポートされているトレースレベル:
INFO、WARN、ERRORTRACE、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 を使用する独自のプロジェクトで次のコマンドを実行できます。
次の出力が生成されます。
トレースファイルは次のように開くことができます。