プロファイラ

ブラウザオートメーション中に Chrome DevTools でのパフォーマンスプロファイルをキャプチャします。 プロファイルを使用して、ページの遅延読み込み、高コストな JavaScript、レイアウトの乱れ、およびエージェントワークフローにおける他のパフォーマンスのボトルネックを診断します。

基本的な使い方

# プロファイリングの開始
agent-browser profiler start

# 操作の実行
agent-browser navigate https://example.com
agent-browser click "#button"

# 終了とプロファイルの保存
agent-browser profiler stop ./trace.json

出力される JSON ファイルは、Chrome DevTools、Perfetto UI、または任意の Chrome Trace Event 形式を受け入れるツールに読み込むことができます。

コマンド

コマンド説明
profiler startパフォーマンスプロファイルの記録を開始する
profiler start --categories <list>カスタムトレースカテゴリで開始する
profiler stop [path]プロファイリングを終了し、ファイルに保存する

トレースカテゴリ

--categories オプションには、カンマ区切りの Chrome トレースカテゴリリストを指定できます。

agent-browser profiler start --categories "devtools.timeline,v8.execute,blink.user_timing"

デフォルトのカテゴリには devtools.timelinev8.executeblinkblink.user_timinglatencyInforenderer.schedulertoplevel があり、さらに詳細な CPU プロファイリングやコールスタック分析用の複数の disabled-by-default-* カテゴリが含まれます。

一般的なカテゴリ

カテゴリキャプチャ対象
devtools.timeline標準的な DevTools パフォーマンスイベント
v8.executeJavaScript 実行に費やされた時間
blinkレンダラーイベント(レイアウト、描画、スタイル)
blink.user_timingperformance.mark() および performance.measure() の呼び出し
latencyInfo入力から表示までの遅延
disabled-by-default-v8.cpu_profilerサンプリングベースの JS CPU プロファイリング

出力形式

出力は、Chrome Trace Event 形式の JSON ファイルです:

{
  "traceEvents": [
    {
      "cat": "devtools.timeline",
      "name": "RunTask",
      "ph": "X",
      "ts": 12345,
      "dur": 100,
      "pid": 1,
      "tid": 1
    }
  ],
  "metadata": {
    "clock-domain": "LINUX_CLOCK_MONOTONIC"
  }
}

metadata.clock-domain フィールドはホストプラットフォーム(Linux または macOS)を反映しています。Windows ではこのフィールドは省略されます。

プロファイルの表示

  • Chrome DevTools -- パフォーマンスパネル > プロファイルの読み込み
  • Perfetto -- https://ui.perfetto.dev/ (JSON ファイルをドラッグアンドドロップ)
  • Trace Viewer -- 任意の Chromium ブラウザで chrome://tracing

利用例

  • ページ読み込みの分析 -- ナビゲーション時の遅延リソース、長時間タスク、レイアウトの変化を特定するためのプロファイリング
  • インタラクションのプロファイリング -- クリック、フォーム入力などのユーザーアクションのコストを測定
  • CI レグレッションチェック -- ビルドごとにプロファイルを取得し、時間経過とともにトレースデータを比較
  • エージェントワークフローの最適化 -- エージェントフロー内のどのステップが最もコストが高いかを特定

制限事項

  • Chromium ベースのブラウザ(Chrome、Edge)でのみ動作します。Firefox や WebKit ではサポートされていません。
  • プロファイリング中はトレースデータがメモリに蓄積されます(最大 500 万件のイベントまで)。関心のある領域の後は、速やかにプロファイリングを停止してください。
  • 終了時のデータ収集には 30 秒のタイムアウトがあります。ブラウザが応答しない場合、停止コマンドが失敗する可能性があります。
  • 出力パスが指定されない場合、プロファイルは agent-browser の一時ディレクトリ内に自動生成されたパスに保存されます。