ベンチマーク
adk-bench クレートと cargo adk bench コマンドは、ADK-Rust エージェント向けの実際の LLM ベンチマークを提供します。合成マイクロベンチマークとは異なり、adk-bench はライブモデル呼び出しによる実際のエンドツーエンドのパフォーマンスを測定し、フレームワークのオーバーヘッドとプロバイダーのレイテンシを切り分けます。
測定対象
| 指標 | 説明 |
|---|---|
| コールドスタート | プロセス起動から最初のLLM応答までの時間 |
| エージェントループのオーバーヘッド | ツール呼び出しの往復ごとのフレームワークコスト(LLMの待機時間を除く) |
| スループット | 継続的な負荷下での毎秒リクエスト数 |
| メモリ | 実行中のピークRSS |
| トークンオーバーヘッド | フレームワークのインストルメンテーションによって追加される余分なトークン |
| CV(変動係数) | 実行間における測定値の安定性 |
クイックスタート
# Run all benchmarks with default settings
cargo adk bench
# Run a specific workload
cargo adk bench --workload simple_tool_call
# Dry run (no LLM calls, validates config only)
cargo adk bench --dry-run
CLI リファレンス
cargo adk bench [OPTIONS]
OPTIONS:
--workload <NAME> Run a specific workload (simple_tool_call,
multi_step_reasoning, parallel_tool_invocation)
--iterations <N> Number of iterations per workload [default: 10]
--warmup <N> Warmup iterations before measurement [default: 2]
--provider <NAME> LLM provider to benchmark [default: gemini]
--model <MODEL> Model ID to use [default: gemini-3.5-flash-lite]
--output <FORMAT> Output format: table, json, csv [default: table]
--output-file <PATH> Write results to file instead of stdout
# Cost control
--dry-run Validate configuration without making LLM calls
--max-cost-usd <AMOUNT> Abort if estimated cost exceeds this amount
--confirm-cost Prompt for confirmation before running
# Regression detection
--save-baseline <NAME> Save results as a named baseline
--check-regression <NAME> Compare against a saved baseline
--tolerance <PERCENT> Regression threshold percentage [default: 10]
# External comparison
--ebp Enable External Benchmark Protocol output
--harness <PATH> Path to external framework harness config
コスト管理
ベンチマークでは実際の LLM 呼び出しが行われます。予期しない請求を避けるには、次のフラグを使用してください。
# Preview what would run without spending anything
cargo adk bench --dry-run
# Set a hard cost ceiling
cargo adk bench --max-cost-usd 5.00
# Require manual confirmation after cost estimate
cargo adk bench --confirm-cost
コスト見積もりでは、過去の実行結果のトークン数(またはワークロード定義からの推定値)に、プロバイダーが公開しているトークン単価を乗算します。
回帰検出
リリース間でパフォーマンスを追跡します。
# Establish a baseline after a release
cargo adk bench --save-baseline v1.0.0
# On the next change, check for regressions
cargo adk bench --check-regression v1.0.0 --tolerance 10
# Tighter tolerance for critical paths
cargo adk bench --workload simple_tool_call --check-regression v1.0.0 --tolerance 5
終了コード:
0— 回帰は検出されませんでした1— 少なくとも1つのメトリクスが許容範囲を超えて悪化しました2— 構成またはランタイムエラー
ベースラインは .adk-bench/baselines/ に JSON ファイルとして保存されます。
外部フレームワーク比較(EBP)
External Benchmark Protocol(EBP)により、他のエージェントフレームワークとの公平な比較が可能になります。EBP は標準のワークロード形式と測定プロトコルを定義しているため、実装間で結果を比較できます。
# Output EBP-compatible results
cargo adk bench --ebp --output json > results.json
# Run against an external harness (e.g., LangGraph, Python SDK)
cargo adk bench --harness harnesses/langraph.toml
ハーネス構成ファイルでは、同じワークロードを使用して外部フレームワークを呼び出し、同じ方法論でその結果を測定する方法を定義します。
ベンチマーク結果
(決定論的な構成、同じモデル、同じワークロードで)ADK-Rust と他のフレームワークを比較した公開結果:
| 指標 | ADK-Rust | Gemini Python SDK | LangGraph |
|---|---|---|---|
| コールドスタート | 109 ms | 501 ms | 502 ms |
| ループオーバーヘッド | 568 μs | 253 μs | 1228 ms |
| simple_tool_call | 合計1.2秒 | 合計1.8秒 | 合計2.1秒 |
| multi_step_reasoning | 合計4.1秒 | 合計5.9秒 | 合計7.3秒 |
| parallel_tool_invocation | 合計2.3秒 | 合計3.7秒 | 合計4.8秒 |
方法論:
- モックではない、実際の Gemini 3.5 Flash-Lite 呼び出し
- 決定論的な設定:
temperature=0、固定シード - ウォームアップ実行 2 回後に 10 回反復
- オーバーヘッドの分離: 合計時間から測定済みの LLM レイテンシを差し引く
- すべてのフレームワークで同一のツール定義とプロンプトを使用
ワークロード
simple_tool_call
1 つのユーザーメッセージ → 1 回のツール呼び出し → 1 つのレスポンス。最小限のラウンドトリップオーバーヘッドを測定します。
multi_step_reasoning
各ツール呼び出しの間に推論を挟み、3~5 回の逐次的なツール呼び出しを必要とするマルチターンの会話。持続的なループ性能を測定します。
parallel_tool_invocation
1 つのユーザーメッセージによって 3 つのツール呼び出しを並列で実行します。同時ディスパッチのオーバーヘッドを測定します。
プログラムによる使用
use adk_bench::{BenchmarkSuite, BenchConfig, Workload};
let config = BenchConfig::builder()
.iterations(10)
.warmup(2)
.provider("gemini")
.model("gemini-3.5-flash-lite")
.build()?;
let suite = BenchmarkSuite::new(config);
let results = suite.run_all().await?;
for result in &results {
println!("{}: cold_start={}ms overhead={}μs",
result.workload,
result.cold_start_ms,
result.loop_overhead_us,
);
}
参考資料
以下については adk-bench/README.md を参照してください:
- カスタムワークロードの定義
- ハーネス作成ガイド
- CI 統合パターン
- 過去の結果の追跡