قياس الأداء

توفر حزمة adk-bench وأمر cargo adk bench قياس أداء واقعي-LLM للوكلاء ADK-Rust. وعلى خلاف الاختبارات المعيارية المصغّرة الاصطناعية، تقيس adk-bench الأداء الفعلي من البداية إلى النهاية مع استدعاءات مباشرة للنموذج، مما يعزل الحمل الزائد لإطار العمل عن زمن استجابة المزوّد.

ما الذي يقيسه

المقياسالوصف
بدء التشغيل الباردالوقت من إطلاق العملية إلى أول استجابة LLM
النفقات العامة لحلقة الوكيلتكلفة إطار العمل لكل رحلة ذهابًا وإيابًا لاستدعاء الأداة (باستثناء وقت انتظار LLM)
الإنتاجيةعدد الطلبات في الثانية تحت حمل مستمر
الذاكرةذروة RSS أثناء التنفيذ
الحمل الزائد للرموزالرموز الإضافية التي تضيفها أدوات قياس إطار العمل
معامل الاختلاف (CV)استقرار القياسات عبر عمليات التشغيل

البدء السريع

# Run all benchmarks with default settings
cargo adk bench

# Run a specific workload
cargo adk bench --workload simple_tool_call

# Dry run (no LLM calls, validates config only)
cargo adk bench --dry-run

مرجع CLI

cargo adk bench [OPTIONS]

OPTIONS:
    --workload <NAME>          Run a specific workload (simple_tool_call,
                               multi_step_reasoning, parallel_tool_invocation)
    --iterations <N>           Number of iterations per workload [default: 10]
    --warmup <N>               Warmup iterations before measurement [default: 2]
    --provider <NAME>          LLM provider to benchmark [default: gemini]
    --model <MODEL>            Model ID to use [default: gemini-3.5-flash-lite]
    --output <FORMAT>          Output format: table, json, csv [default: table]
    --output-file <PATH>       Write results to file instead of stdout

    # Cost control
    --dry-run                  Validate configuration without making LLM calls
    --max-cost-usd <AMOUNT>    Abort if estimated cost exceeds this amount
    --confirm-cost             Prompt for confirmation before running

    # Regression detection
    --save-baseline <NAME>     Save results as a named baseline
    --check-regression <NAME>  Compare against a saved baseline
    --tolerance <PERCENT>      Regression threshold percentage [default: 10]

    # External comparison
    --ebp                      Enable External Benchmark Protocol output
    --harness <PATH>           Path to external framework harness config

التحكم في التكلفة

تُجري الاختبارات المعيارية استدعاءات حقيقية إلى LLM. استخدم هذه العلامات لتجنب الفواتير غير المتوقعة:

# Preview what would run without spending anything
cargo adk bench --dry-run

# Set a hard cost ceiling
cargo adk bench --max-cost-usd 5.00

# Require manual confirmation after cost estimate
cargo adk bench --confirm-cost

يستخدم مقدّر التكلفة أعداد الرموز المميزة من عمليات التشغيل السابقة (أو التقديرات المستخلصة من تعريف عبء العمل) مضروبةً في الأسعار المنشورة لكل رمز مميز لدى المزوّد.

اكتشاف التراجعات

تتبّع الأداء عبر الإصدارات:

# Establish a baseline after a release
cargo adk bench --save-baseline v1.0.0

# On the next change, check for regressions
cargo adk bench --check-regression v1.0.0 --tolerance 10

# Tighter tolerance for critical paths
cargo adk bench --workload simple_tool_call --check-regression v1.0.0 --tolerance 5

رموز الخروج:

  • 0 — لم يُكتشف أي تراجع
  • 1 — تراجع مقياس واحد على الأقل بما يتجاوز حدّ التحمّل
  • 2 — خطأ في الإعداد أو وقت التشغيل

تُخزَّن الخطوط الأساسية في .adk-bench/baselines/ كملفات JSON.

المقارنة مع أطر العمل الخارجية (EBP)

يتيح بروتوكول المقارنة المعيارية الخارجية (EBP) إجراء مقارنات مباشرة مع أطر عمل الوكلاء الأخرى. يحدد EBP تنسيقًا قياسيًا لعبء العمل وبروتوكولًا للقياس، بحيث تكون النتائج قابلة للمقارنة عبر عمليات التنفيذ المختلفة.

# Output EBP-compatible results
cargo adk bench --ebp --output json > results.json

# Run against an external harness (e.g., LangGraph, Python SDK)
cargo adk bench --harness harnesses/langraph.toml

تحدد ملفات إعداد أداة الاختبار كيفية استدعاء أطر العمل الخارجية باستخدام أعباء العمل نفسها، وقياس نتائجها باستخدام المنهجية نفسها.

نتائج الاختبارات المعيارية

النتائج المنشورة التي تقارن ADK-Rust بأطر العمل الأخرى (إعداد حتمي، والنموذج نفسه، وعبء العمل نفسه):

المقياسADK-RustGemini Python SDKLangGraph
بدء التشغيل البارد109 ms501 ms502 ms
عبء الحلقة568 μs253 μs1228 ms
simple_tool_callإجمالي 1.2sإجمالي 1.8sإجمالي 2.1s
multi_step_reasoningإجمالي 4.1sإجمالي 5.9sإجمالي 7.3s
parallel_tool_invocationإجمالي 2.3sإجمالي 3.7sإجمالي 4.8s

المنهجية:

  • استدعاءات حقيقية لـ Gemini 3.5 Flash-Lite (وليست محاكاة)
  • إعدادات حتمية: temperature=0، وبذرة ثابتة
  • 10 تكرارات بعد تشغيلين تمهيديين
  • عزل النفقات العامة: الوقت الإجمالي ناقص زمن استجابة LLM المقاس
  • تعريفات الأدوات والمطالبات نفسها عبر جميع الأطر

أعباء العمل

simple_tool_call

رسالة مستخدم واحدة ← استدعاء أداة واحد ← استجابة واحدة. يقيس الحد الأدنى من النفقات العامة لرحلة الذهاب والإياب.

multi_step_reasoning

محادثة متعددة الأدوار تتطلب 3–5 استدعاءات متسلسلة للأدوات، مع إجراء الاستدلال بين كل استدعاء وآخر. يقيس أداء الحلقة المستمر.

parallel_tool_invocation

رسالة مستخدم واحدة تؤدي إلى 3 استدعاءات متوازية للأدوات. يقيس نفقات الإرسال المتزامن العامة.

الاستخدام البرمجي

use adk_bench::{BenchmarkSuite, BenchConfig, Workload};

let config = BenchConfig::builder()
    .iterations(10)
    .warmup(2)
    .provider("gemini")
    .model("gemini-3.5-flash-lite")
    .build()?;

let suite = BenchmarkSuite::new(config);
let results = suite.run_all().await?;

for result in &results {
    println!("{}: cold_start={}ms overhead={}μs",
        result.workload,
        result.cold_start_ms,
        result.loop_overhead_us,
    );
}

قراءة إضافية

راجع adk-bench/README.md للاطلاع على:

  • تعريفات أعباء العمل المخصصة
  • دليل تأليف أدوات الاختبار
  • أنماط التكامل مع CI
  • تتبع النتائج التاريخية

السابق: ← تنفيذ التعليمات البرمجية | التالي: الأدوات ACP →

قياس الأداء - وثائق ADK-Rust | ADK-Rust