Benchmark-Ergebnisse
Veröffentlichte Leistungsbenchmarks, die ADK-Rust mit anderen Agent-Frameworks vergleichen. Alle Messungen verwenden echte LLM-Aufrufe mit deterministischer Konfiguration zur Reproduzierbarkeit.
Zusammenfassung
| Metrik | ADK-Rust | Gemini Python SDK | LangGraph |
|---|---|---|---|
| Kaltstart | 109 ms | 501 ms | 502 ms |
| Overhead der Agentenschleife | 568 μs | 253 μs | 1228 ms |
ADK-Rust erreicht einen etwa 4,6-mal schnelleren Kaltstart als beide Python-Frameworks und einen Schleifen-Overhead von unter einer Millisekunde. Der Gemini-Python-SDK weist aufgrund der minimalen Abstraktion einen geringfügig niedrigeren Schleifen-Overhead auf, aber der Overhead von ADK-Rust ist im Vergleich zu den typischen Antwortzeiten von LLM (500 ms–3 s) vernachlässigbar.
Ergebnisse der Workloads
simple_tool_call
Eine einzelne Benutzernachricht → ein Tool-Aufruf → eine abschließende Antwort. Misst den minimalen Roundtrip.
| Framework | Gesamtzeit | Kaltstart | Schleifen-Overhead | 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
Mehrfachrunden-Konversation, die 3–5 aufeinanderfolgende Tool-Aufrufe mit einer Begründung zwischen jedem Schritt erfordert.
| Framework | Gesamtzeit | Kaltstart | Schleifen-Overhead | 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
Eine einzelne Benutzernachricht, die 3 parallel ausgeführte Tool-Aufrufe gleichzeitig auslöst.
| Rahmenwerk | Gesamtzeit | Kaltstart | Schleifen-Overhead | 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% |
So reproduzieren
# 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
Anforderungen:
- Umgebungsvariable
GOOGLE_API_KEYgesetzt - Netzwerkzugriff auf Gemini API
- Für den Vergleich zwischen Frameworks: Python 3.11+ mit installiertem
google-genaiundlanggraph
Methodik
Testumgebung
- Modell: Gemini 3.5 Flash-Lite (
gemini-3.5-flash-lite) - Temperatur: 0 (deterministisch)
- Festgelegter Zufalls-Seed zur Reproduzierbarkeit
- 10 Messiterationen nach 2 Aufwärmläufen
- Netzwerk: derselbe Rechner, dasselbe Netzwerk für alle Frameworks
Isolierung des Overheads
Der Framework-Overhead wird isoliert, indem die gemessene LLM-Latenz von der gesamten Ausführungszeit abgezogen wird:
loop_overhead = total_time - sum(llm_response_times) - sum(tool_execution_times)
Dadurch wird der Beitrag des Frameworks isoliert: Serialisierung, Deserialisierung, Kontextzusammenstellung, Ereignisverarbeitung und Zustandsverwaltung.
Bedeutung der Metriken
| Metrik | Definition | Warum dies wichtig ist |
|---|---|---|
| Kaltstart | Zeit vom Start des Prozesses bis zum Empfang der ersten LLM-Antwort | Beeinflusst den Start von Serverless-/Container-Umgebungen und die Reaktionsfähigkeit von CLI |
| Schleifen-Overhead | Verarbeitungszeit des Frameworks pro Tool-Aufruf-Roundtrip | Summiert sich bei Agenten mit mehreren Schritten (5 Schritte × 1.2 s = 6 s Verschwendung) |
| Gesamtzeit | End-to-End-Wanduhrzeit für den vollständigen Workflow | Vom Nutzer wahrgenommene Latenz |
| CV | Variationskoeffizient (std_dev / Mittelwert × 100) | Messstabilität — niedriger = zuverlässiger |
Deterministische Konfiguration
Alle Frameworks verwenden identische:
- Tooldefinitionen (gleiche Namen, Schemas, Mock-Implementierungen)
- System-Prompts und Benutzernachrichten
- Modelleinstellungen (temperature=0, keine Sampling-Variationen)
- Tool-Implementierungen (geben feste Antworten zurück, keine E/A)
Einschränkungen
- Ergebnisse hängen von den Netzwerkbedingungen und der Gemini-API-Auslastung ab
- Python-Frameworks wurden mit CPython 3.11 gemessen (nicht PyPy)
- Der Kaltstart umfasst den Start des Python-Interpreters für Python-Frameworks
- Der Schleifen-Overhead für LangGraph umfasst die Graphdurchquerung und die Serialisierung des Zustands
Regressionen nachverfolgen
Verwenden Sie Benchmarks in CI, um Performance-Regressionen zu erkennen:
# 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%
Baselines werden in .adk-bench/baselines/ gespeichert und können in das Repository übernommen werden.
Weiterführende Informationen
- Leitfaden zum Benchmarking von Tools — CLI-Referenz und Konfiguration
- ROADMAP.md — Performance-Ziele für zukünftige Releases
adk-bench/README.md— Vollständige Dokumentation des Benchmark-Frameworks
Zurück: ← Evaluation | Weiter: Zugriffskontrolle →