Resultados de referencia
Pruebas de rendimiento publicadas que comparan ADK-Rust con otros marcos de agentes. Todas las mediciones utilizan llamadas reales a LLM con una configuración determinista para garantizar la reproducibilidad.
Resumen
| Métrica | ADK-Rust | Gemini Python SDK | LangGraph |
|---|---|---|---|
| Inicio en frío | 109 ms | 501 ms | 502 ms |
| Sobrecarga del bucle del agente | 568 μs | 253 μs | 1228 ms |
ADK-Rust logra un arranque en frío aproximadamente 4,6 veces más rápido que ambos frameworks de Python, además de una sobrecarga del bucle inferior a un milisegundo. El SDK de Gemini para Python tiene una sobrecarga del bucle ligeramente menor debido a su mínima abstracción, pero la sobrecarga de ADK-Rust es insignificante en comparación con los tiempos de respuesta habituales de LLM (500 ms–3 s).
Resultados de las cargas de trabajo
simple_tool_call
Un mensaje de usuario → una llamada a una herramienta → una respuesta final. Mide el recorrido de ida y vuelta mínimo.
| Marco de trabajo | Tiempo total | Inicio en frío | Sobrecarga del bucle | 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
Conversación de varios turnos que requiere de 3 a 5 llamadas secuenciales a herramientas, con razonamiento entre cada paso.
| Marco de trabajo | Tiempo total | Inicio en frío | Sobrecarga del bucle | 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 único mensaje del usuario que activa 3 llamadas paralelas a herramientas, enviadas de forma concurrente.
| Marco de trabajo | Tiempo total | Inicio en frío | Sobrecarga del bucle | 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% |
Cómo reproducir
# 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
Requisitos:
- Variable de entorno
GOOGLE_API_KEYconfigurada - Acceso de red a Gemini API
- Para la comparación entre frameworks: Python 3.11+ con
google-genaiylanggraphinstalados
Metodología
Entorno de prueba
- Modelo: Gemini 3.5 Flash-Lite (
gemini-3.5-flash-lite) - Temperatura: 0 (determinista)
- Semilla aleatoria fija para garantizar la reproducibilidad
- 10 iteraciones de medición después de 2 ejecuciones de calentamiento
- Red: misma máquina y misma red para todos los frameworks
Aislamiento de la sobrecarga
La sobrecarga del framework se aísla restando la latencia medida de LLM del tiempo total de ejecución:
loop_overhead = total_time - sum(llm_response_times) - sum(tool_execution_times)
Esto aísla la contribución del framework: serialización, deserialización, ensamblaje del contexto, distribución de eventos y gestión del estado.
Qué significan las métricas
| Métrica | Definición | Por qué importa |
|---|---|---|
| Arranque en frío | Tiempo desde el inicio del proceso hasta recibir la primera respuesta de LLM | Afecta al inicio de servidores sin servidor/contenedores y a la capacidad de respuesta de CLI |
| Sobrecarga del bucle | Tiempo de procesamiento del framework por cada ida y vuelta de llamada a herramienta | Se acumula en agentes de varios pasos (5 pasos × 1.2 s = 6 s desperdiciados) |
| Tiempo total | Tiempo de reloj de extremo a extremo para el flujo de trabajo completo | Latencia percibida por el usuario |
| CV | Coeficiente de variación (std_dev / media × 100) | Estabilidad de la medición — menor = más fiable |
Configuración determinista
Todos los frameworks utilizan elementos idénticos:
- Definiciones de herramientas (mismos nombres, esquemas e implementaciones simuladas)
- Indicaciones del sistema y mensajes del usuario
- Configuración del modelo (temperature=0, sin variación en el muestreo)
- Implementaciones de herramientas (devuelven respuestas fijas, sin E/S)
Limitaciones
- Los resultados dependen de las condiciones de red y de la carga de Gemini API
- Los frameworks de Python se midieron con CPython 3.11 (no PyPy)
- El arranque en frío incluye el inicio del intérprete de Python para los frameworks de Python
- La sobrecarga del bucle para LangGraph incluye el recorrido del grafo y la serialización del estado
Seguimiento de regresiones
Utiliza benchmarks en CI para detectar regresiones de rendimiento:
# 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%
Las líneas base se almacenan en .adk-bench/baselines/ y se pueden confirmar en el repositorio.
Lecturas adicionales
- Guía de herramientas de benchmarking — Referencia y configuración de CLI
- ROADMAP.md — Objetivos de rendimiento para futuras versiones
adk-bench/README.md— Documentación completa del framework de benchmarking
Anterior: ← Evaluación | Siguiente: Control de acceso →