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

المقاييس هي النوع الرئيسي من المعلومات المستخرَجة من مقاييس الأداء. ويتم تمريرها إلى دالة 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 Studio، كما هو موضّح في الشكل 1. في حال تحديد مقاييس متعددة، يتم دمجها جميعًا في الإخراج.

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

StartupTimingMetric

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

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

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

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

FrameTimingMetric

FrameTimingMetric تُسجِّل معلومات التوقيت من اللقطات التي ينشئها مقياس الأداء، مثل الانتقال أو الصور المتحركة، وتُخرج القيم التالية:

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

يتم جمع هذه القياسات في توزيع الشريحة المئوية الخمسين والتسعين والخامسة والتسعين والتسعين.

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

نتائج 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 نتيجة.