performance-investigation について
ブランチ間のベンチマーク性能を比較し、レポートと CPU プロファイルで回帰を調べる、リポジトリ向けのスキルです。対象を絞った再実行やランタイムテストの手順も示します。
主な機能
- 01ブランチ間のベンチマーク比較
- 02回帰レポートと生データの出力
- 03CPU プロファイルの要約と差分
- 04選択したベンチマークの実行
- 05ランタイム回帰テストの案内
活用シーン
- 01ブランチの main に対する性能低下の確認
- 02ベンチマーク差分の原因となるホットスポットの特定
- 03指定したリアクティビティベンチマークの再実行
- 04テストによる性能変更の検証
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ sveltejs/ svelte --skill performance-investigationインストール後、Claude Code で/performance-investigationを入力して読み込まれたか確認します。
詳細
クイックスタート
- 測定したいブランチ(例:
foo)から開始します。 - 次を実行します。
pnpm bench:compare main foo
ブランチを1つだけ渡すと、bench:compare は自動的に main と比較します。
出力先
- サマリーレポート:
benchmarking/compare/.results/report.txt - ベンチマークの生データ:
benchmarking/compare/.results/main.jsonbenchmarking/compare/.results/<your-branch>.json
- CPU プロファイル(ベンチマークごと、ブランチごと):
benchmarking/compare/.profiles/main/*.cpuprofilebenchmarking/compare/.profiles/main/*.mdbenchmarking/compare/.profiles/<your-branch>/*.cpuprofilebenchmarking/compare/.profiles/<your-branch>/*.md
.md ファイルは CPU プロファイルのサマリーを生成したもので、ホットスポットを調べる際に最も手早く確認できることが多いです。
推奨される調査の流れ
benchmarking/compare/.results/report.txtを開き、まず大きな性能低下を特定します。- 差分の大きい各ベンチマークについて、次を比較します。
benchmarking/compare/.profiles/main/<benchmark>.mdbenchmarking/compare/.profiles/<branch>/<benchmark>.md
- ランタイム内部(
runtime.js、reactivity/batch.js、reactivity/deriveds.js、reactivity/sources.js)における、セルフ/包含ホットスポットの割合の変化を確認します。 - 最適化の変更は一度に1つ行い、全体比較を再実行する前に、対象を絞ったベンチマークを再実行します。
高速なベンチマークの反復実行
部分文字列で選択したリアクティビティのベンチマークのみを実行します。
pnpm bench kairo_mux kairo_deep kairo_broad kairo_triangle
pnpm bench repeated_deps sbench_create_signals mol_owned
性能改善後に実行するテスト
ランタイムのリアクティビティに関するリグレッションは、ルーンのランタイムテストで最も発生しやすいです。
pnpm test runtime-runes
便利なスクリプト
2つのブランチ間で、cpuprofile のホットスポットの差分を手早く確認するには、次を実行します。
node benchmarking/compare/profile-diff.mjs kairo_mux_owned main foo
選択したベンチマークについて、関数ごとのサンプル割合の上位差分が出力されます。
実用上の注意点
bench:compareは実行中にブランチをチェックアウトします。安全にブランチを切り替えられるよう、未コミットの変更は避けるか、スタッシュしてください。bench:compareを実行するたびに、benchmarking/compare/.resultsとbenchmarking/compare/.profilesが書き換えられます。
コメント
Markdown 対応