벤치마크 결과
다른 에이전트 프레임워크와 비교한 ADK-Rust의 공개 성능 벤치마크입니다. 모든 측정은 재현성을 위해 결정론적 구성으로 실제 LLM 호출을 사용합니다.
요약
| 측정항목 | ADK-Rust | Gemini Python SDK | LangGraph |
|---|---|---|---|
| 콜드 스타트 | 109 ms | 501 ms | 502 ms |
| 에이전트 루프 오버헤드 | 568 μs | 253 μs | 1228 ms |
ADK-Rust는 Python 프레임워크보다 약 4.6배 빠른 콜드 스타트와 1밀리초 미만의 루프 오버헤드를 모두 달성합니다. Gemini Python SDK는 최소한의 추상화로 인해 루프 오버헤드가 약간 더 낮지만, 일반적인 LLM 응답 시간(500ms–3초)에 비하면 ADK-Rust의 오버헤드는 무시할 수 있는 수준입니다.
워크로드 결과
simple_tool_call
단일 사용자 메시지 → 하나의 도구 호출 → 하나의 최종 응답. 최소 왕복 시간을 측정합니다.
| 프레임워크 | 총 시간 | 콜드 스타트 | 루프 오버헤드 | 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
각 단계 사이에 추론이 포함된 3~5회의 순차적인 도구 호출이 필요한 다중 턴 대화입니다.
| 프레임워크 | 총 시간 | 콜드 스타트 | 루프 오버헤드 | 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
3개의 병렬 도구 호출을 동시에 실행하도록 트리거하는 단일 사용자 메시지.
| 프레임워크 | 총 시간 | 콜드 스타트 | 루프 오버헤드 | 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% |
재현 방법
# 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
요구 사항:
GOOGLE_API_KEY환경 변수가 설정되어 있어야 함- Gemini API에 대한 네트워크 액세스
- 프레임워크 간 비교의 경우:
google-genai및langgraph가 설치된 Python 3.11 이상
방법론
테스트 환경
- 모델: Gemini 3.5 Flash-Lite(
gemini-3.5-flash-lite) - Temperature: 0(결정론적)
- 재현성을 위해 고정된 난수 시드 사용
- 2회의 워밍업 실행 후 10회의 측정 반복
- 네트워크: 모든 프레임워크에서 동일한 머신과 동일한 네트워크 사용
오버헤드 분리
프레임워크 오버헤드는 측정된 LLM 지연 시간을 전체 실행 시간에서 빼서 분리합니다.
loop_overhead = total_time - sum(llm_response_times) - sum(tool_execution_times)
이를 통해 직렬화, 역직렬화, 컨텍스트 조합, 이벤트 디스패치 및 상태 관리와 같은 프레임워크의 기여 부분을 분리할 수 있습니다.
메트릭의 의미
| 지표 | 정의 | 중요한 이유 |
|---|---|---|
| 콜드 스타트 | 프로세스 시작부터 첫 LLM 응답을 수신할 때까지의 시간 | 서버리스/컨테이너 시작 및 CLI 응답성에 영향을 줌 |
| 루프 오버헤드 | 도구 호출 왕복당 프레임워크 처리 시간 | 여러 단계로 구성된 에이전트에서 누적됨(5단계 × 1.2초 = 6초 낭비) |
| 총 시간 | 전체 워크플로의 종단 간 벽시계 시간 | 사용자가 인지하는 지연 시간 |
| CV | 변동 계수(std_dev / 평균 × 100) | 측정 안정성 — 낮을수록 더 신뢰할 수 있음 |
결정론적 구성
모든 프레임워크는 다음을 동일하게 사용합니다.
- 도구 정의(동일한 이름, 스키마, 모의 구현)
- 시스템 프롬프트 및 사용자 메시지
- 모델 설정(temperature=0, 샘플링 변동 없음)
- 도구 구현(고정된 응답 반환, I/O 없음)
제한 사항
- 결과는 네트워크 상태와 Gemini API 부하에 따라 달라집니다.
- Python 프레임워크는 CPython 3.11로 측정되었습니다(PyPy 아님).
- 콜드 스타트에는 Python 프레임워크의 Python 인터프리터 시작 시간이 포함됩니다.
- LangGraph의 루프 오버헤드에는 그래프 순회와 상태 직렬화가 포함됩니다.
회귀 추적
성능 회귀를 감지하려면 CI에서 벤치마크를 사용합니다.
# 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%
기준선은 .adk-bench/baselines/에 저장되며 저장소에 커밋할 수 있습니다.
추가 읽을거리
- 벤치마킹 도구 가이드 — CLI 참조 및 구성
- ROADMAP.md — 향후 릴리스의 성능 목표
adk-bench/README.md— 전체 벤치마크 프레임워크 문서