बेंचमार्क परिणाम
अन्य एजेंट फ़्रेमवर्क के साथ ADK-Rust की तुलना करने वाले प्रकाशित प्रदर्शन बेंचमार्क। सभी माप पुनरुत्पादन के लिए नियतात्मक कॉन्फ़िगरेशन के साथ वास्तविक LLM कॉल का उपयोग करते हैं।
सारांश
| मेट्रिक | ADK-Rust | Gemini Python SDK | LangGraph |
|---|---|---|---|
| कोल्ड स्टार्ट | 109 ms | 501 ms | 502 ms |
| एजेंट लूप ओवरहेड | 568 μs | 253 μs | 1228 ms |
ADK-Rust, Python के दोनों frameworks की तुलना में लगभग 4.6× तेज़ cold start और sub-millisecond loop overhead प्रदान करता है। Gemini Python SDK में न्यूनतम abstraction के कारण loop overhead थोड़ा कम है, लेकिन सामान्य LLM response time (500ms–3s) की तुलना में ADK-Rust का overhead नगण्य है।
वर्कलोड परिणाम
simple_tool_call
एकल user message → एक tool call → एक अंतिम response। न्यूनतम round-trip को मापता है।
| फ्रेमवर्क | कुल समय | कोल्ड स्टार्ट | लूप ओवरहेड | 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) - तापमान: 0 (नियतात्मक)
- पुनरुत्पादन के लिए निश्चित रैंडम सीड
- 2 वार्मअप रन के बाद 10 मापन पुनरावृत्तियाँ
- नेटवर्क: सभी फ़्रेमवर्क के लिए एक ही मशीन और एक ही नेटवर्क
ओवरहेड पृथक्करण
कुल निष्पादन समय में से मापी गई LLM विलंबता घटाकर फ़्रेमवर्क ओवरहेड को अलग किया जाता है:
loop_overhead = total_time - sum(llm_response_times) - sum(tool_execution_times)
इससे फ़्रेमवर्क का योगदान अलग होता है: सीरियलाइज़ेशन, डीसीरियलाइज़ेशन, संदर्भ संयोजन, इवेंट डिस्पैच और स्थिति प्रबंधन।
मेट्रिक्स का अर्थ
| मेट्रिक | परिभाषा | यह क्यों महत्वपूर्ण है |
|---|---|---|
| शीत प्रारंभ | प्रक्रिया शुरू होने से पहली LLM प्रतिक्रिया प्राप्त होने तक का समय | सर्वरलेस/कंटेनर स्टार्टअप और CLI की प्रतिक्रियाशीलता को प्रभावित करता है |
| लूप ओवरहेड | प्रत्येक उपकरण-कॉल राउंड-ट्रिप के लिए फ़्रेमवर्क का प्रसंस्करण समय | बहु-चरणीय एजेंटों में बढ़ता जाता है (5 चरण × 1.2s = 6s व्यर्थ) |
| कुल समय | संपूर्ण वर्कफ़्लो के लिए शुरू से अंत तक का वॉल क्लॉक समय | उपयोगकर्ता द्वारा अनुभव की गई विलंबता |
| 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— संपूर्ण बेंचमार्क फ़्रेमवर्क दस्तावेज़ीकरण
पिछला: ← मूल्यांकन | अगला: अभिगम नियंत्रण →