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

المفاهيم والتنفيذ في 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: مقدار الوقت الذي يستغرقه إنشاء اللقطة على وحدة المعالجة المركزية (CPU) في كل من سلسلة واجهة المستخدم وRenderThread

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

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

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

TraceSectionMetric

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

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

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

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