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

المفاهيم وتنفيذ 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() أو الذي يحتوي عليه. قد لا يتوفّر هذا القياس على الإصدار 10 من نظام التشغيل Android (المستوى 29 من واجهة برمجة التطبيقات) والإصدارات الأقدم.

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

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

FrameTimingMetric

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

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

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

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

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

TraceSectionMetric

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

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

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

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