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

المقاييس هي النوع الرئيسي من المعلومات المستخرَجة من مقاييس الأداء. يتم تمريرها إلى الدالة 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 بالتفصيل لاحقًا في هذا المستند. للحصول على قائمة كاملة بالمقاييس، اطّلِع على الفئات الفرعية من Metric.

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

نتائج TraceSectionMetric وFrameTimingMetric
الشكل 1. نتائج TraceSectionMetric وFrameTimingMetric

StartupTimingMetric

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

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

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

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

FrameTimingMetric

FrameTimingMetric تسجّل معلومات التوقيت من اللقطات التي ينتجها مقياس أداء، مثل التمرير أو الرسوم المتحركة، وتعرض القيم التالية:

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

يتم جمع هذه القياسات في توزيع للشريحة المئوية الـ 50 والـ 90 والـ 95 والـ 99.

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

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

TraceSectionMetric

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

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

TraceSectionMetric
الشكل 4. TraceSectionMetric نتيجة

PowerMetric

تعرض 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 نتيجة