mcpField
N
native-app-performance

native-app-performance

github.com/steipete開発7.4k243 回インストール1 週間前に更新
リポジトリ

native-app-performance について

native-app-performanceは、ネイティブアプリのTime Profilerトレースをコマンドラインだけで記録・分析するスキルです。開発者向けに、Instrumentsを開かずにサンプルを抽出し、スタックをシンボリケートしてアプリのホットスポットを順位付けします。

主な機能

  1. 01アタッチまたは起動によるTime Profiler記録
  2. 02トレースからの時間サンプル抽出
  3. 03バイナリとロードアドレスを使ったスタックのシンボリケート
  4. 04アプリ内の頻出フレームの順位付け

活用シーン

  1. 01ネイティブアプリのホットスポット特定
  2. 02特定の遅い処理のプロファイリング
  3. 03Instrumentsを開かずにトレースを分析

インストール

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

$npx skills add https://github.com/steipete/agent-scripts --skill native-app-performance

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

同梱ファイル

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

scripts/
extract_time_samples.py
record_time_profiler.sh
top_hotspots.py

詳細

ネイティブアプリのパフォーマンス(CLI のみ)

目標:xctrace で Time Profiler を記録し、サンプルを抽出してシンボルを解決し、Instruments を開かずにホットスポットを提案します。

クイックスタート(CLI)

  1. Time Profiler を記録(アタッチ):
# Start app yourself, then attach
xcrun xctrace record --template 'Time Profiler' --time-limit 90s --output /tmp/App.trace --attach <pid>
  1. Time Profiler を記録(起動):
xcrun xctrace record --template 'Time Profiler' --time-limit 90s --output /tmp/App.trace --launch -- /path/App.app/Contents/MacOS/App
  1. 時間サンプルを抽出:
scripts/extract_time_samples.py --trace /tmp/App.trace --output /tmp/time-sample.xml
  1. シンボル解決用のロードアドレスを取得:
# While app is running
vmmap <pid> | rg -m1 "__TEXT" -n
  1. シンボルを解決してホットスポットを順位付け:
scripts/top_hotspots.py --samples /tmp/time-sample.xml \
  --binary /path/App.app/Contents/MacOS/App \
  --load-address 0x100000000 --top 30

ワークフローに関する注意

  • 正しいバイナリ(ローカルビルドか /Applications のものか)をプロファイリングしていることを必ず確認してください。--launch にはバイナリの直接パスを指定することをおすすめします。
  • 記録中に遅い処理を実行してください(メニューの開閉、更新など)。
  • スタックが空の場合は、記録時間を長くするか、アイドル状態の区間を避けてください。
  • xcrun xctrace help record と xcrun xctrace help export で正しいフラグを確認できます。

付属スクリプト

  • scripts/record_time_profiler.sh:アタッチまたは起動して記録します。
  • scripts/extract_time_samples.py:トレースから時間サンプルの XML をエクスポートします。
  • scripts/top_hotspots.py:シンボルを解決し、アプリ内フレームの上位を順位付けします。

注意点

  • ASLR のため、vmmap から実行時の __TEXT ロードアドレスを使用する必要があります。
  • 新しいビルドを使用する場合は、--binary のパスを更新してください。シンボルはトレースと一致している必要があります。
  • CLI のみのワークフローでは、atos でスタックのシンボルを解決できるため、Instruments を開く必要はありません。

コメント