Resultados de Benchmark
Benchmarks de desempenho publicados que comparam ADK-Rust com outros frameworks de agentes. Todas as medições usam chamadas reais de LLM com configuração determinística para permitir a reprodução.
Resumo
| Métrica | ADK-Rust | Gemini Python SDK | LangGraph |
|---|---|---|---|
| Inicialização a frio | 109 ms | 501 ms | 502 ms |
| Sobrecarga do loop do agente | 568 μs | 253 μs | 1228 ms |
ADK-Rust alcança uma inicialização a frio aproximadamente 4,6× mais rápida do que ambos os frameworks Python, além de uma sobrecarga de loop inferior a um milissegundo. O SDK do Gemini para Python tem uma sobrecarga de loop ligeiramente menor devido à abstração mínima, mas a sobrecarga de ADK-Rust é insignificante em relação aos tempos de resposta típicos de LLM (500 ms–3 s).
Resultados das cargas de trabalho
simple_tool_call
Uma mensagem de usuário → uma chamada de ferramenta → uma resposta final. Mede o ciclo de ida e volta mínimo.
| Framework | Tempo total | Inicialização a frio | Sobrecarga do loop | 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
Conversa com múltiplas interações que exige de 3 a 5 chamadas sequenciais de ferramentas, com raciocínio entre cada etapa.
| Framework | Tempo total | Inicialização a frio | Sobrecarga do loop | 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
Uma única mensagem do usuário acionando 3 chamadas de ferramentas paralelas, despachadas simultaneamente.
| Framework | Tempo total | Inicialização a frio | Sobrecarga do loop | 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% |
Como Reproduzir
# 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:
- Variável de ambiente
GOOGLE_API_KEYdefinida - Acesso à rede para o Gemini API
- Para comparação entre frameworks: Python 3.11+ com
google-genaielanggraphinstalados
Metodologia
Ambiente de Teste
- Modelo: Gemini 3.5 Flash-Lite (
gemini-3.5-flash-lite) - Temperatura: 0 (determinístico)
- Semente aleatória fixa para reprodutibilidade
- 10 iterações de medição após 2 execuções de aquecimento
- Rede: mesma máquina, mesma rede para todos os frameworks
Isolamento da Sobrecarga
A sobrecarga do framework é isolada subtraindo a latência medida de LLM do tempo total de execução:
loop_overhead = total_time - sum(llm_response_times) - sum(tool_execution_times)
Isso isola a contribuição do framework: serialização, desserialização, montagem de contexto, despacho de eventos e gerenciamento de estado.
O Que as Métricas Significam
| Métrica | Definição | Por que isso importa |
|---|---|---|
| Inicialização a frio | Tempo desde o lançamento do processo até o recebimento da primeira resposta de LLM | Afeta a inicialização de ambientes serverless/contêineres e a capacidade de resposta de CLI |
| Sobrecarga do loop | Tempo de processamento do framework por ida e volta de uma chamada de ferramenta | Acumula-se em agentes de várias etapas (5 etapas × 1.2s = 6s desperdiçados) |
| Tempo total | Tempo de relógio de parede de ponta a ponta para o fluxo de trabalho completo | Latência percebida pelo usuário |
| CV | Coeficiente de variação (std_dev / média × 100) | Estabilidade da medição — menor = mais confiável |
Configuração determinística
Todos os frameworks usam de forma idêntica:
- Definições de ferramentas (mesmos nomes, esquemas e implementações simuladas)
- Prompts do sistema e mensagens do usuário
- Configurações do modelo (temperature=0, sem variação de amostragem)
- Implementações de ferramentas (retornam respostas fixas, sem E/S)
Limitações
- Os resultados dependem das condições da rede e da carga do Gemini API
- Frameworks Python medidos com CPython 3.11 (não PyPy)
- A inicialização a frio inclui a inicialização do interpretador Python para frameworks Python
- A sobrecarga do loop para LangGraph inclui a travessia do grafo e a serialização do estado
Acompanhamento de regressões
Use benchmarks na CI para detectar regressões de desempenho:
# 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%
As linhas de base são armazenadas em .adk-bench/baselines/ e podem ser submetidas ao repositório.
Leitura adicional
- Guia de benchmarking de ferramentas — referência e configuração de CLI
- ROADMAP.md — Metas de desempenho para versões futuras
adk-bench/README.md— Documentação completa do framework de benchmarking
Anterior: ← Avaliação | Próximo: Controle de acesso →