الحصول على مقاييس مقاييس الأداء الكلية

المقاييس هي النوع الرئيسي من المعلومات المستخرَجة من مقاييس الأداء. ويتم تمريرها إلى الدالة measureRepeated باعتبارها List، ما يتيح لك تحديد مقاييس متعددة تم قياسها في وقت واحد. هناك نوع واحد على الأقل من المقاييس لتشغيل المعيار

يلتقط مقتطف الرمز التالي توقيت عرض اللقطة ومقاييس قسم التتبُّع المخصّصة:

Kotlin

benchmarkRule.measureRepeated(
    packageName = TARGET_PACKAGE,
    metrics = listOf(
        FrameTimingMetric(),
        TraceSectionMetric("RV CreateView"),
        TraceSectionMetric("RV OnBindView"),
    ),
    iterations = 5,
    // ...
)

Java

benchmarkRule.measureRepeated(
    TARGET_PACKAGE,     // packageName
    Arrays.asList(      // metrics
        new StartupTimingMetric(),
        new TraceSectionMetric("RV CreateView"),
        new TraceSectionMetric("RV OnBindView"),
    ),
    5,                  // Iterations
    // ...
);

في هذا المثال، RV CreateView وRV OnBindView هما رقما تعريف الوحدات القابلة للتتبُّع التي تم تحديدها في RecyclerView. إنّ رمز المصدر للطريقة createViewHolder() هو مثال على كيفية تحديد الوحدات القابلة للتتبُّع ضمن الرمز الخاص بك.

يمكنك الاطّلاع على StartupTimingMetric وTraceSectionMetric وFrameTimingMetric وPowerMetric بالتفصيل لاحقًا في هذا المستند.

يتم عرض نتائج قياس الأداء في "استوديو Android"، كما هو موضّح في الشكل 1. وإذا تم تحديد مقاييس متعددة، سيتم دمجها جميعًا في الناتج.

نتائج كل من Trace SectionMetric وFrameTimingMetric.
الشكل 1. نتائج البحث عن TraceSectionMetric وFrameTimingMetric

StartupTimingMetric

يعرض StartupTimingMetric مقاييس توقيت بدء تشغيل التطبيق بالقيم التالية:

  • timeToInitialDisplayMs: مقدار الوقت المنقضي منذ تلقي النظام لهدف الإطلاق إلى وقت عرض الإطار الأول للوجهة Activity.
  • timeToFullDisplayMs: مقدار الوقت المنقضي منذ أن يتلقّى النظام عملية الإطلاق إلى وقت إبلاغ التطبيق عن الرسم الكامل باستخدام الطريقة reportFullyDrawn(). يتوقف القياس عند اكتمال عرض الإطار الأول بعد - أو يشتمل على - استدعاء reportFullyDrawn(). قد لا يكون هذا القياس متاحًا على نظام التشغيل Android 10 (المستوى 29 من واجهة برمجة التطبيقات) والإصدارات الأقدم.

تنتج عن StartupTimingMetric قيم الحدّ الأدنى والمتوسط والحد الأقصى من تكرارات بدء التشغيل. لتقييم تحسين الشركة الناشئة، يجب التركيز على القيم المتوسطة، لأنها توفر أفضل تقدير لوقت بدء التشغيل النموذجي. لمزيد من المعلومات عن العوامل التي تساهم في تحديد مدة بدء تشغيل التطبيق، يمكنك الاطّلاع على وقت بدء تشغيل التطبيق.

نتائج StartupTimingMetric
الشكل 2. StartupTimingMetric نتيجة

FrameTimingMetric

يلتقط FrameTimingMetric معلومات التوقيت من الإطارات التي تم إنشاؤها من خلال مقياس أداء، مثل التمرير أو الصورة المتحركة، وتعرض القيم التالية:

  • frameOverrunMs: مقدار الوقت الذي يتخطى فيه إطار معيّن الموعد النهائي المحدد له. تشير الأرقام الموجبة إلى سقوط الإطار ووجود تعطّل أو تقطُّع مرئي. تشير الأرقام السالبة إلى مدى سرعة الإطار عن الموعد النهائي. ملاحظة: لا تتوفّر هذه الميزة إلا على نظام التشغيل Android 12 (المستوى 31 لواجهة برمجة التطبيقات) والإصدارات الأحدث.
  • frameDurationCpuMs: مقدار الوقت المستغرَق ليتم إنتاجه على وحدة المعالجة المركزية (CPU) على كل من سلسلة واجهة المستخدم وRenderThread.

تُجمع هذه القياسات بتوزيع بنسبة مئوية 50 و90 و95 و99.

لمزيد من المعلومات حول كيفية تحديد اللقطات البطيئة وتحسينها، يمكنك الاطّلاع على العرض البطيء.

نتائج FrameTimingMetric
الشكل 3. FrameTimingMetric نتيجة

مقياس التتبع

وتلتقط TraceSectionMetric عدد مرات حدوث مقطع تتبُّع يتطابق مع sectionName المقدمة مع الوقت المستغرق. بالنسبة للوقت، فهي تُخرج الحد الأدنى والمتوسط والحد الأقصى للأوقات بالمللي ثانية. يتم تعريف قسم التتبُّع إما من خلال استدعاء الدالة trace(sectionName) أو الرمز بين Trace.beginSection(sectionName) وTrace.endSection() أو من صيغهما غير المتزامنة. وتختار دائمًا المثيل الأول لقسم التتبّع الذي تم التقاطه أثناء القياس. فهي تؤدي إلى إخراج أقسام تتبُّع من الحِزمة بشكل تلقائي فقط. ولتضمين العمليات خارج الحزمة، يمكنك ضبط targetPackageOnly = false.

لمزيد من المعلومات عن التتبُّع، اطّلِع على نظرة عامة على تتبُّع النظام وتحديد الأحداث المخصّصة.

مقياس التتبع
الشكل 4. TraceSectionMetric نتيجة

مقياس الطاقة

تسجِّل العلامة PowerMetric التغيُّر في الطاقة أو الطاقة خلال مدة الاختبار لفئات الطاقة المقدّمة. يتم تقسيم كل فئة محددة إلى مكوّناتها الفرعية القابلة للقياس، وإضافة الفئات غير المحددة إلى المقياس "غير المحددة".

تقيس هذه المقاييس الاستهلاك على مستوى النظام، وليس الاستهلاك على أساس كل تطبيق، وتقتصر على هواتف Pixel 6 وPixel 6 Pro والإصدارات الأحدث:

  • power<category>Uw: مقدار الطاقة المستهلكة خلال مدة اختبارك في هذه الفئة.
  • energy<category>Uws: مقدار الطاقة المنقولة لكل وحدة زمنية خلال مدة الاختبار في هذه الفئة.

وتشمل الفئات ما يلي:

  • CPU
  • DISPLAY
  • GPU
  • GPS
  • MEMORY
  • MACHINE_LEARNING
  • NETWORK
  • UNCATEGORIZED

في بعض الفئات، مثل CPU، قد يكون من الصعب فصل العمل الذي تنجزه العمليات الأخرى عن العمل الذي يؤديه تطبيقك. للحدّ من التداخل، يجب إزالة التطبيقات والحسابات غير الضرورية أو حظرها.

نتائج PowerMetric
الشكل 5. PowerMetric نتيجة