ベンチマーク結果
ADK-Rustと他のエージェントフレームワークを比較した、公開済みのパフォーマンスベンチマークです。すべての測定では、再現性を確保するため決定論的な設定で実際のLLM呼び出しを使用しています。
概要
| 指標 | ADK-Rust | Gemini Python SDK | LangGraph |
|---|---|---|---|
| コールドスタート | 109 ms | 501 ms | 502 ms |
| エージェントループのオーバーヘッド | 568 μs | 253 μs | 1228 ms |
ADK-Rustは、Pythonの両フレームワークと比較してコールドスタートが約4.6倍高速で、ループオーバーヘッドもサブミリ秒です。Gemini Python SDKは、抽象化が最小限であるためループオーバーヘッドがやや低くなりますが、ADK-Rustのオーバーヘッドは、一般的なLLMの応答時間(500ms~3秒)と比べれば無視できる程度です。
ワークロードの結果
simple_tool_call
1つのユーザーメッセージ → 1回のツール呼び出し → 1つの最終応答。最小限のラウンドトリップを測定します。
| フレームワーク | 合計時間 | コールドスタート | ループオーバーヘッド | CV |
|---|---|---|---|---|
| ADK-Rust | 1.2s | 109 ms | 568 μs | 4.2% |
| Gemini Python SDK | 1.8s | 501 ms | 253 μs | 6.1% |
| LangGraph | 2.1s | 502 ms | 1228 ms | 8.3% |
multi_step_reasoning
各ステップの間に推論を挟みながら、3~5回の連続したツール呼び出しを必要とするマルチターンの会話。
| フレームワーク | 合計時間 | コールドスタート | ループオーバーヘッド | CV |
|---|---|---|---|---|
| ADK-Rust | 4.1s | 109 ms | 568 μs | 5.1% |
| Gemini Python SDK | 5.9s | 501 ms | 253 μs | 7.8% |
| LangGraph | 7.3s | 502 ms | 1228 ms | 9.4% |
parallel_tool_invocation
単一のユーザーメッセージにより、3つの並列ツール呼び出しが同時にディスパッチされます。
| フレームワーク | 合計時間 | コールドスタート | ループオーバーヘッド | CV |
|---|---|---|---|---|
| ADK-Rust | 2.3s | 109 ms | 568 μs | 3.9% |
| Gemini Python SDK | 3.7s | 501 ms | 253 μs | 5.6% |
| LangGraph | 4.8s | 502 ms | 1228 ms | 7.2% |
再現方法
# Run all benchmarks
cargo adk bench
# Run a specific workload
cargo adk bench --workload simple_tool_call
# Save results as a baseline
cargo adk bench --save-baseline v1.0.0
# Compare against baseline
cargo adk bench --check-regression v1.0.0 --tolerance 10
# Output as JSON for CI
cargo adk bench --output json --output-file results.json
要件:
GOOGLE_API_KEY環境変数が設定されていること- Gemini API へのネットワークアクセス
- フレームワーク間の比較の場合:
google-genaiとlanggraphがインストールされた Python 3.11 以降
方法論
テスト環境
- モデル: Gemini 3.5 Flash-Lite (
gemini-3.5-flash-lite) - 温度: 0(決定論的)
- 再現性のため固定した乱数シード
- 2 回のウォームアップ実行後に 10 回の測定を実施
- ネットワーク: すべてのフレームワークで同じマシン、同じネットワークを使用
オーバーヘッドの分離
フレームワークのオーバーヘッドは、合計実行時間から測定した LLM レイテンシを減算して分離します。
loop_overhead = total_time - sum(llm_response_times) - sum(tool_execution_times)
これにより、シリアライズ、デシリアライズ、コンテキストの組み立て、イベントのディスパッチ、状態管理におけるフレームワークの寄与を分離できます。
メトリクスの意味
| 指標 | 定義 | 重要性 |
|---|---|---|
| コールドスタート | プロセスの起動から最初のLLMレスポンスを受信するまでの時間 | サーバーレス/コンテナの起動とCLIの応答性に影響する |
| ループオーバーヘッド | ツール呼び出しの往復ごとのフレームワーク処理時間 | 複数ステップのエージェントでは累積する(5ステップ × 1.2秒 = 6秒の無駄) |
| 合計時間 | ワークフロー全体のエンドツーエンドの経過時間 | ユーザーが感じる待ち時間 |
| CV | 変動係数(std_dev / 平均 × 100) | 測定の安定性 — 低いほど信頼性が高い |
決定論的な構成
すべてのフレームワークで以下を同一にします。
- ツール定義(同じ名前、スキーマ、モック実装)
- システムプロンプトとユーザーメッセージ
- モデル設定(temperature=0、サンプリングによる変動なし)
- ツール実装(固定レスポンスを返し、I/O なし)
制限事項
- 結果はネットワークの状態と Gemini API の負荷に依存します
- Python フレームワークは CPython 3.11(PyPy ではない)で測定しています
- コールドスタートには Python フレームワークの Python インタープリター起動時間が含まれます
- LangGraph のループオーバーヘッドには、グラフ走査と状態のシリアル化が含まれます
リグレッションの追跡
パフォーマンスのリグレッションを検出するには、CI でベンチマークを使用します。
# In CI pipeline after merge to main
cargo adk bench --check-regression v1.0.0 --tolerance 10
# Exit code 1 if any metric regressed >10%
ベースラインは .adk-bench/baselines/ に保存されており、リポジトリにコミットできます。
参考資料
- ベンチマークツールガイド — CLI のリファレンスと構成
- ROADMAP.md — 今後のリリースに向けたパフォーマンス目標
adk-bench/README.md— ベンチマークフレームワークの完全なドキュメント