perf-baseline.json の取り扱い
perf-baseline.json は .spec-workflow/specs/app-performance-optimization/ の改善目標を判定するための数値置き場です。CI / pre-push で参照する thresholds も同居します。
spec: app-performance-optimization
スキーマ
jsonc
{
"version": 1, // 互換性が壊れたら +1
"measuredAt": "ISO 8601 string", // 最後に更新した日時
"build": "control@<sha>", // 計測時の commit / build 名
"bundle": {
"controlMainKb": 0, // Control 主バンドル size (KB)
"controlTotalKb": 0, // Control 全体 (KB)
"overlayKb": 0 // Overlay singlefile (KB)
},
"startup": {
"mainBootstrapMs": 0, // electron/utils/perf.ts の main.bootstrap 中央値
"controlFirstPaintMs": 0 // renderer first paint 中央値(手動 or perf util)
},
"tabSwitch": {
"settings": 0,
"realtime": 0,
"db": 0,
"player": 0,
"browserAutomation": 0,
"logAnalysis": 0
},
"thresholds": {
"controlMainKb": 0, // これを超えたらバンドル size チェッカが fail
"mainBootstrapMs": 0, // これを超えたら起動退化と判定
"tabSwitchMaxMs": 0 // タブごとの上限
}
}再生成手順
一括計測(推奨)
sh
yarn perf:allこれは内部で:
yarn build:electron-ts— main プロセスのトランスパイルyarn build— control / overlay / bp-opponent のレンダラビルドnpx tsx scripts/perf/measure-bundle.ts—dist/のサイズを集計しbundle.controlMainKb/bundle.overlayKb/bundle.bpOpponentKbを更新npx tsx scripts/perf/measure-startup.ts— Electron を 5 回 cold-start し、 main の[perf] main.bootstrap=<ms>と renderer の[perf] control.firstPaint=<ms>の中央値をstartup.mainBootstrapMs/startup.controlFirstPaintMsに書き込む
個別計測
sh
yarn perf:startup # 起動時間のみ
yarn perf:bundle # バンドルサイズのみ(事前に build 必要)
npx tsx scripts/perf/measure-startup.ts --runs 3
npx tsx scripts/perf/measure-startup.ts --labels main.bootstrap,control.firstPaintタブ切替 TTI(現状は手動)
Control を yarn dev:electron で起動し React DevTools Profiler で 5 サンプル 取り、中央値を tabSwitch.<tab> へ手動で記入する。Playwright Electron による 自動化は別 spec(e2e-automation-tests)の範囲で行う想定。
値の意味
- 計測時点で
0のままのフィールドは「未計測」。Phase 0 完了後は全フィールドに非ゼロを入れる。 thresholds.*は spec の KPI(起動 -30% / バンドル -20% / TTI -30%)に従って Phase 0 終了時に確定する。- 値の更新は spec 内のタスク完了時のみ。原則として個別 PR で
measuredAtとbuildを必ず更新する。
関連ファイル
electron/utils/perf.ts/src/utils/perf.ts— 計測 APIscripts/perf/measure-startup.ts— 起動時間計測スクリプト.spec-workflow/specs/app-performance-optimization/— spec 本体