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

مفاهيم وتنفيذ Jetpack Compose

المقاييس هي النوع الرئيسي من المعلومات المستخرَجة من قياسات الأداء. ويتم تمريرها إلى الدالة 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 سيتم تناولها بالتفصيل لاحقًا في هذا المستند. للاطّلاع على قائمة كاملة بالمقاييس، يمكنك الاطّلاع على الفئات الفرعية من 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: مقدار الوقت الذي تتأخر فيه لقطة معيّنة عن الموعد النهائي. تشير الأرقام الموجبة إلى لقطة تم إسقاطها مصحوبة بإيقاف مؤقت لعرض واجهة المستخدم أو تقطُّع مرئي. تشير الأرقام السالبة إلى مدى سرعة اكتمال اللقطة مقارنةً بالموعد النهائي لأجهزة النظام الفرعي. ملاحظة: لا يتوفّر هذا المقياس إلا على Android 12 (مستوى واجهة برمجة التطبيقات 31) والإصدارات الأحدث.
  • frameDurationCpuMs: مقدار الوقت الذي يستغرقه الإطار لإنتاجه على وحدة المعالجة المركزية (CPU) في كلٍّ من سلسلة واجهة المستخدم وRenderThread.

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

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

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

TraceSectionMetric

TraceSectionMetric يلتقط عدد مرات ظهور قسم تتبُّع معيّن ومقدار الوقت المطلق الذي يستغرقه تنفيذه. لتتبُّع الوقت، يعرض الحد الأدنى والمتوسط والحد الأقصى للأوقات بالملّي ثانية.

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

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

TraceSectionMetric
الشكل 4. نتائج TraceSectionMetric
.