Benchmark Results

Published performance benchmarks comparing ADK-Rust against other agent frameworks. All measurements use real LLM calls with deterministic configuration for reproducibility.

Summary

MetricADK-RustGemini Python SDKLangGraph
Cold start109 ms501 ms502 ms
Agent loop overhead568 μs253 μs1228 ms

ADK-Rust achieves ~4.6× faster cold start than both Python frameworks and sub-millisecond loop overhead. The Gemini Python SDK has slightly lower loop overhead due to minimal abstraction, but ADK-Rust's overhead is negligible relative to typical LLM response times (500ms–3s).

Workload Results

simple_tool_call

Single user message → one tool call → one final response. Measures minimal round-trip.

FrameworkTotal TimeCold StartLoop OverheadCV
ADK-Rust1.2s109 ms568 μs4.2%
Gemini Python SDK1.8s501 ms253 μs6.1%
LangGraph2.1s502 ms1228 ms8.3%

multi_step_reasoning

Multi-turn conversation requiring 3–5 sequential tool calls with reasoning between each step.

FrameworkTotal TimeCold StartLoop OverheadCV
ADK-Rust4.1s109 ms568 μs5.1%
Gemini Python SDK5.9s501 ms253 μs7.8%
LangGraph7.3s502 ms1228 ms9.4%

parallel_tool_invocation

Single user message triggering 3 parallel tool calls dispatched concurrently.

FrameworkTotal TimeCold StartLoop OverheadCV
ADK-Rust2.3s109 ms568 μs3.9%
Gemini Python SDK3.7s501 ms253 μs5.6%
LangGraph4.8s502 ms1228 ms7.2%

How to Reproduce

# 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

Requirements:

  • GOOGLE_API_KEY environment variable set
  • Network access to Gemini API
  • For cross-framework comparison: Python 3.11+ with google-genai and langgraph installed

Methodology

Test Environment

  • Model: Gemini 2.5 Flash (gemini-2.5-flash)
  • Temperature: 0 (deterministic)
  • Fixed random seed for reproducibility
  • 10 measurement iterations after 2 warmup runs
  • Network: same machine, same network for all frameworks

Overhead Isolation

Framework overhead is isolated by subtracting measured LLM latency from total execution time:

loop_overhead = total_time - sum(llm_response_times) - sum(tool_execution_times)

This isolates the framework's contribution: serialization, deserialization, context assembly, event dispatch, and state management.

What the Metrics Mean

MetricDefinitionWhy It Matters
Cold startTime from process launch to first LLM response receivedAffects serverless/container startup, CLI responsiveness
Loop overheadFramework processing time per tool-call round-tripCompounds over multi-step agents (5 steps × 1.2s = 6s wasted)
Total timeEnd-to-end wall clock for the complete workflowUser-perceived latency
CVCoefficient of variation (std_dev / mean × 100)Measurement stability — lower = more reliable

Deterministic Configuration

All frameworks use identical:

  • Tool definitions (same names, schemas, mock implementations)
  • System prompts and user messages
  • Model settings (temperature=0, no sampling variation)
  • Tool implementations (return fixed responses, no I/O)

Limitations

  • Results depend on network conditions and Gemini API load
  • Python frameworks measured with CPython 3.11 (not PyPy)
  • Cold start includes Python interpreter startup for Python frameworks
  • Loop overhead for LangGraph includes graph traversal and state serialization

Tracking Regressions

Use benchmarks in CI to catch performance regressions:

# 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 are stored in .adk-bench/baselines/ and can be committed to the repository.

Further Reading

  • Benchmarking Tool Guide — CLI reference and configuration
  • ROADMAP.md — Performance targets for future releases
  • adk-bench/README.md — Full benchmark framework documentation

Previous: ← Evaluation | Next: Access Control →