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étriqueADK-RustGemini Python SDKLangGraph
Démarrage à froid109 ms501 ms502 ms
Surcharge de la boucle de l’agent568 μs253 μs1228 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.

CadreTemps totalDémarrage à froidSurcharge de boucleCV
ADK-Rust1.2s109 ms568 μs4.2%
Gemini Python SDK1.8s501 ms253 μs6.1%
LangGraph2.1s502 ms1228 ms8.3%

multi_step_reasoning

Conversation à plusieurs tours nécessitant 3 à 5 appels d’outils séquentiels, avec un raisonnement entre chaque étape.

FrameworkTemps totalDémarrage à froidSurcharge de boucleCV
ADK-Rust4.1s109 ms568 μs5.1%
Gemini Python SDK5.9s501 ms253 μs7.8%
LangGraph7.3s502 ms1228 ms9.4%

parallel_tool_invocation

Un message utilisateur unique déclenchant 3 appels d’outils parallèles exécutés simultanément.

FrameworkTemps totalDémarrage à froidSurcharge de boucleCV
ADK-Rust2.3s109 ms568 μs3.9%
Gemini Python SDK3.7s501 ms253 μs5.6%
LangGraph4.8s502 ms1228 ms7.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_KEY définie
  • Accès réseau à Gemini API
  • Pour la comparaison entre frameworks : Python 3.11+ avec google-genai et langgraph installé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

IndicateurDéfinitionPourquoi c’est important
Démarrage à froidTemps écoulé entre le lancement du processus et la réception de la première réponse LLMAffecte le démarrage des environnements serverless/conteneurs et la réactivité de CLI
Surcharge de boucleTemps de traitement du framework par aller-retour d’appel d’outilS’accumule avec les agents comportant plusieurs étapes (5 étapes × 1,2 s = 6 s perdues)
Temps totalTemps d’horloge de bout en bout pour l’ensemble du workflowLatence perçue par l’utilisateur
CVCoefficient 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 →