mcpField
X
xcode-build-benchmark

xcode-build-benchmark

github.com/avdlee開発1.3k3.4k 回インストール28 週間前に更新
リポジトリ

xcode-build-benchmark について

最適化の前に、再現可能な Xcode ビルド時間の基準を作成するスキルです。クリーン、キャッシュ済みクリーン、変更なし、および任意の増分ビルドを測定し、比較用にタイムスタンプ付き JSON を保存します。

主な機能

  1. 01クリーンビルドと増分ビルドを個別に測定
  2. 02各種ビルドを複数回実行
  3. 03ビルドコマンドと条件を統一
  4. 04タイムスタンプ付き JSON の保存
  5. 05中央値、範囲、時間カテゴリの報告

活用シーン

  1. 01ビルド最適化前の基準記録
  2. 02クリーンビルドと変更なしビルドの負荷比較
  3. 03実際の編集後ビルドの測定
  4. 04条件をそろえた不安定な測定の再実行

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/avdlee/xcode-build-optimization-agent-skill --skill xcode-build-benchmark

インストール後、Claude Code で/xcode-build-benchmarkを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
benchmark-artifacts.md
benchmarking-workflow.md
schemas/
build-benchmark.schema.json
scripts/
benchmark_builds.py

詳細

Xcode ビルドベンチマーク

ビルド時間の最適化を試みる前に、再現可能な Xcode ビルドのベースラインを作成するには、このスキルを使用します。

基本ルール

  • 変更を推奨する前に測定します。
  • クリーンビルドとインクリメンタルビルドは別々に記録します。
  • 実行ごとに、コマンド、デスティネーション、構成、スキーム、ウォームアップのルールを統一します。
  • タイムスタンプ付きの JSON アーティファクトを .build-benchmark/ に書き出します。
  • ベンチマークの一環としてプロジェクトファイルを変更してはいけません。

収集する入力情報

以下を確認するか、推定します。

  • ワークスペースまたはプロジェクトのパス
  • スキーム
  • 構成
  • デスティネーション
  • ユーザーがシミュレーターとデバイスのどちらの数値を希望しているか
  • カスタムの DerivedData パスが必要かどうか

クリーンビルドとインクリメンタルビルドの両方に問題がある場合は、両方をベンチマークします。これがデフォルトです。

ワークツリーに関する考慮事項

git worktree 内でベンチマークを実行する場合、gitignore 対象のディレクトリ(例:__Snapshots__)を参照する exclude: パスがある SPM パッケージは、xcodebuild -resolvePackageDependencies をクラッシュさせます。ビルドを実行する前に、これらの不足しているディレクトリを作成してください。

デフォルトのワークフロー

  1. ビルドコマンドを標準化し、キャッシュやモジュールの再利用に影響するフラグをすべて記録します。
  2. 必要に応じてウォームアップビルドを 1 回実行し、コマンドが成功することを確認します。
  3. クリーンビルドを 3 回実行します。
  4. COMPILATION_CACHE_ENABLE_CACHING = YES が検出された場合は、キャッシュ済みクリーンビルドを 3 回実行します。これは、ウォーム状態のコンパイルキャッシュを使ったクリーンビルド時間を測定します。ブランチの切り替え、変更の取得、または「ビルドフォルダをクリーン」の現実的なシナリオです。スクリプトはキャッシュをウォームアップするために 1 回ビルドした後、測定の各実行前に DerivedData を削除します(コンパイルキャッシュは削除しません)。スキップするには --no-cached-clean を渡します。
  5. ゼロ変更ビルドを 3 回実行します(編集を加えず、ビルド成功直後にビルドします)。これにより、依存関係の計算、プロジェクト記述の転送、ビルド記述の作成、スクリプトフェーズ、コード署名、検証にかかる固定オーバーヘッドの下限を測定します。ゼロ変更ビルドに数秒以上かかる場合は、ビルドごとに回避可能なオーバーヘッドが発生していることを示しています。デフォルトの benchmark_builds.py 呼び出しを使用します(--touch-file フラグなし)。
  6. 必要に応じて、ファイルのタッチを伴うインクリメンタルビルドを 3 回実行し、実際の編集と再ビルドのループを測定します。各ビルドの前に代表的なソースファイルをタッチするには、--touch-file path/to/SomeFile.swift を使用します。
  7. 生の結果と概要を .build-benchmark/ に保存します。
  8. 最速の 1 回だけでなく、中央値とばらつきを報告します。

推奨するコマンドの実行方法

可能な場合は共有ヘルパーを使用します。

python3 scripts/benchmark_builds.py \
  --workspace App.xcworkspace \
  --scheme MyApp \
  --configuration Debug \
  --destination "platform=iOS Simulator,name=iPhone 16" \
  --output-dir .build-benchmark

ヘルパースクリプトを使用できない場合は、-showBuildTimingSummary を指定した同等の xcodebuild コマンドを実行し、生の出力を保持します。

必須の出力

以下を返します。

  • クリーンビルドの中央値、最小値、最大値
  • キャッシュ済みクリーンビルドの中央値、最小値、最大値(COMPILATION_CACHE_ENABLE_CACHING が有効な場合)
  • ゼロ変更ビルドの中央値、最小値、最大値(固定オーバーヘッドの下限)
  • インクリメンタルビルドの中央値、最小値、最大値(--touch-file を使用した場合)
  • タイミングサマリーの主なカテゴリ
  • 比較に影響する可能性のある環境の詳細
  • 保存したアーティファクトのパス

結果にばらつきがある場合はその旨を伝え、より安定した状況での再実行を推奨します。

終了するタイミング

ユーザーがベンチマークのみを依頼した場合は、測定後に終了します。最適化のガイダンスも求めている場合は、関連する専門スキルの SKILL.md を読み、同じプロジェクトのコンテキストにそのワークフローを適用して、アーティファクトを引き継ぎます。

追加リソース

コメント