Ăvaluation des performances
Le crate adk-bench et la commande cargo adk bench fournissent une évaluation des performances réelle de LLM pour les agents ADK-Rust. Contrairement aux microévaluations synthétiques, adk-bench mesure les performances réelles de bout en bout avec des appels à des modÚles en direct, en isolant la surcharge du framework de la latence du fournisseur.
Ce qui est mesuré
| Métrique | Description |
|---|---|
| Démarrage à froid | Temps écoulé entre le lancement du processus et la premiÚre réponse LLM |
| Surcharge de la boucle de lâagent | CoĂ»t du framework par aller-retour dâappel dâoutil (exclut le temps dâattente de LLM) |
| DĂ©bit | RequĂȘtes par seconde sous charge soutenue |
| MĂ©moire | RSS maximal pendant lâexĂ©cution |
| Surcharge de jetons | Jetons supplĂ©mentaires ajoutĂ©s par lâinstrumentation du framework |
| CV (coefficient de variation) | StabilitĂ© des mesures dâune exĂ©cution Ă lâautre |
Démarrage rapide
# 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
Référence de 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
ContrÎle des coûts
Les benchmarks effectuent de véritables appels à LLM. Utilisez ces indicateurs pour éviter les factures imprévues :
# 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
Lâestimateur de coĂ»ts utilise le nombre de tokens des exĂ©cutions prĂ©cĂ©dentes (ou des estimations basĂ©es sur la dĂ©finition de la charge de travail), multipliĂ© par la tarification publiĂ©e par le fournisseur pour chaque token.
Détection des régressions
Suivez les performances au fil des versions :
# 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
Codes de sortie :
0â aucune rĂ©gression dĂ©tectĂ©e1â au moins une mĂ©trique a rĂ©gressĂ© au-delĂ de la tolĂ©rance2â erreur de configuration ou dâexĂ©cution
Les références sont stockées dans .adk-bench/baselines/ sous forme de fichiers JSON.
Comparaison avec des frameworks externes (EBP)
Le protocole de benchmark externe (EBP) permet une comparaison Ă©quitable avec dâautres frameworks dâagents. EBP dĂ©finit un format de charge de travail et un protocole de mesure standard afin que les rĂ©sultats soient comparables entre les implĂ©mentations.
# 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
Les fichiers de configuration du harnais dĂ©finissent comment invoquer des frameworks externes avec les mĂȘmes charges de travail et mesurer leurs rĂ©sultats selon la mĂȘme mĂ©thodologie.
Résultats des benchmarks
RĂ©sultats publiĂ©s comparant ADK-Rust Ă dâautres frameworks (configuration dĂ©terministe, mĂȘme modĂšle, mĂȘme charge de travail) :
| Métrique | ADK-Rust | Gemini Python SDK | LangGraph |
|---|---|---|---|
| Démarrage à froid | 109 ms | 501 ms | 502 ms |
| Surcharge de boucle | 568 ÎŒs | 253 ÎŒs | 1228 ms |
| simple_tool_call | 1,2 s au total | 1,8 s au total | 2,1 s au total |
| multi_step_reasoning | 4,1 s au total | 5,9 s au total | 7,3 s au total |
| parallel_tool_invocation | 2,3 s au total | 3,7 s au total | 4,8 s au total |
Méthodologie :
- Appels réels à Gemini 3.5 Flash-Lite (non simulés)
- Configuration déterministe :
temperature=0, valeur de départ fixe - 10 itérations aprÚs 2 exécutions de préchauffage
- Isolation de la surcharge : temps total moins la latence mesurée de LLM
- MĂȘmes dĂ©finitions dâoutils et mĂȘmes invites dans tous les frameworks
Charges de travail
simple_tool_call
Un seul message utilisateur â un appel dâoutil â une rĂ©ponse. Mesure la surcharge minimale dâun aller-retour.
multi_step_reasoning
Conversation Ă plusieurs tours nĂ©cessitant 3 Ă 5 appels dâoutils sĂ©quentiels, avec un raisonnement entre chacun. Mesure les performances soutenues de la boucle.
parallel_tool_invocation
Un seul message utilisateur dĂ©clenchant 3 appels dâoutils parallĂšles. Mesure la surcharge de distribution concurrente.
Utilisation programmatique
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,
);
}
Pour aller plus loin
Consultez adk-bench/README.md pour :
- Définitions personnalisées de charges de travail
- Guide de rédaction du harness
- ModĂšles dâintĂ©gration CI
- Suivi historique des résultats
PrĂ©cĂ©dent : â ExĂ©cution de code | Suivant : Outils ACP â