Résultats des benchmarks
Benchmarks de performance publiés comparant ADK-Rust à d’autres frameworks d’agents. Toutes les mesures utilisent de véritables appels LLM avec une configuration déterministe pour garantir la reproductibilité.
Résumé
| Métrique | ADK-Rust | Gemini Python SDK | LangGraph |
|---|---|---|---|
| Démarrage à froid | 109 ms | 501 ms | 502 ms |
| Surcharge de la boucle de l’agent | 568 μs | 253 μs | 1228 ms |
ADK-Rust offre un démarrage à froid environ 4,6 fois plus rapide que les deux frameworks Python, ainsi qu’une surcharge de boucle inférieure à la milliseconde. Le SDK Python de Gemini présente une surcharge de boucle légèrement inférieure grâce à une abstraction minimale, mais la surcharge de ADK-Rust est négligeable par rapport aux temps de réponse habituels de LLM (500 ms à 3 s).
Résultats des charges de travail
simple_tool_call
Un message utilisateur → un appel d’outil → une réponse finale. Mesure le temps aller-retour minimal.
| Cadre | Temps total | Démarrage à froid | Surcharge de boucle | 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
Conversation à plusieurs tours nécessitant 3 à 5 appels d’outils séquentiels, avec un raisonnement entre chaque étape.
| Framework | Temps total | Démarrage à froid | Surcharge de boucle | 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
Un message utilisateur unique déclenchant 3 appels d’outils parallèles exécutés simultanément.
| Framework | Temps total | Démarrage à froid | Surcharge de boucle | 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% |
Comment reproduire
# 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
Prérequis :
- Variable d’environnement
GOOGLE_API_KEYdéfinie - Accès réseau à Gemini API
- Pour la comparaison entre frameworks : Python 3.11+ avec
google-genaietlanggraphinstallés
Méthodologie
Environnement de test
- Modèle : Gemini 3.5 Flash-Lite (
gemini-3.5-flash-lite) - Température : 0 (déterministe)
- Graine aléatoire fixe pour assurer la reproductibilité
- 10 itérations de mesure après 2 exécutions de préchauffage
- Réseau : même machine et même réseau pour tous les frameworks
Isolation de la surcharge
La surcharge du framework est isolée en soustrayant la latence mesurée de LLM du temps d’exécution total :
loop_overhead = total_time - sum(llm_response_times) - sum(tool_execution_times)
Cela isole la contribution du framework : sérialisation, désérialisation, assemblage du contexte, distribution des événements et gestion de l’état.
Signification des métriques
| Indicateur | Définition | Pourquoi c’est important |
|---|---|---|
| Démarrage à froid | Temps écoulé entre le lancement du processus et la réception de la première réponse LLM | Affecte le démarrage des environnements serverless/conteneurs et la réactivité de CLI |
| Surcharge de boucle | Temps de traitement du framework par aller-retour d’appel d’outil | S’accumule avec les agents comportant plusieurs étapes (5 étapes × 1,2 s = 6 s perdues) |
| Temps total | Temps d’horloge de bout en bout pour l’ensemble du workflow | Latence perçue par l’utilisateur |
| CV | Coefficient de variation (std_dev / moyenne × 100) | Stabilité de la mesure — plus faible = plus fiable |
Configuration déterministe
Tous les frameworks utilisent des éléments identiques :
- Définitions des outils (mêmes noms, schémas, implémentations simulées)
- Prompts système et messages utilisateur
- Paramètres du modèle (temperature=0, aucune variation d’échantillonnage)
- Implémentations des outils (retournent des réponses fixes, sans E/S)
Limitations
- Les résultats dépendent des conditions réseau et de la charge de API Gemini
- Les frameworks Python sont mesurés avec CPython 3.11 (et non PyPy)
- Le démarrage à froid inclut le démarrage de l’interpréteur Python pour les frameworks Python
- La surcharge de boucle pour LangGraph inclut le parcours du graphe et la sérialisation de l’état
Suivi des régressions
Utilisez les benchmarks dans CI pour détecter les régressions de performances :
# 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%
Les références sont stockées dans .adk-bench/baselines/ et peuvent être validées dans le dépôt.
Pour aller plus loin
- Guide des outils de benchmarking — Référence et configuration de CLI
- ROADMAP.md — Objectifs de performance pour les prochaines versions
adk-bench/README.md— Documentation complète du framework de benchmarking
Précédent : ← Évaluation | Suivant : Contrôle d’accès →