المقاييس هي النوع الرئيسي من المعلومات المستخرَجة من قياسات الأداء. ويتم تمريرها
إلى الدالة 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.StartupTimingMetric
StartupTimingMetric يلتقط مقاييس توقيت بدء تشغيل التطبيق بالقيم التالية:
timeToInitialDisplayMs: مقدار الوقت الذي يستغرقه النظام من وقت تلقّي هدف التشغيل إلى وقت عرض اللقطة الأولى من الوجهةActivity.timeToFullDisplayMs: مقدار الوقت الذي يستغرقه النظام من وقت تلقّي هدف التشغيل إلى وقت إبلاغ التطبيق عن اكتمال عملية الرسم باستخدام الطريقةreportFullyDrawn(). يتوقف القياس عند اكتمال عرض اللقطة الأولى بعد استدعاءreportFullyDrawn()أو التي تتضمّن هذا الاستدعاء. قد لا يكون هذا القياس متاحًا على Android 10 (مستوى واجهة برمجة التطبيقات 29) والإصدارات الأقدم.
يعرض StartupTimingMetric الحد الأدنى والمتوسط والحد الأقصى للقيم من تكرارات بدء التشغيل. لتقييم تحسين بدء التشغيل، ركِّز دائمًا على القيم المتوسطة، لأنّها تقدّم أفضل تقدير لأوقات بدء التشغيل النموذجية للمستخدمين. لمزيد من المعلومات حول العوامل التي تساهم في وقت بدء تشغيل التطبيق، يُرجى الاطّلاع على وقت بدء تشغيل التطبيق.
StartupTimingMetric نتائج.FrameTimingMetric
FrameTimingMetric يلتقط معلومات التوقيت من اللقطات التي ينتجها
قياس الأداء، مثل التمرير أو الصورة المتحركة، ويعرض القيم التالية:
frameOverrunMs: مقدار الوقت الذي تتأخر فيه لقطة معيّنة عن الموعد النهائي. تشير الأرقام الموجبة إلى لقطة تم إسقاطها مصحوبة بإيقاف مؤقت لعرض واجهة المستخدم أو تقطُّع مرئي. تشير الأرقام السالبة إلى مدى سرعة اكتمال اللقطة مقارنةً بالموعد النهائي لأجهزة النظام الفرعي. ملاحظة: لا يتوفّر هذا المقياس إلا على Android 12 (مستوى واجهة برمجة التطبيقات 31) والإصدارات الأحدث.frameDurationCpuMs: مقدار الوقت الذي يستغرقه الإطار لإنتاجه على وحدة المعالجة المركزية (CPU) في كلٍّ من سلسلة واجهة المستخدم وRenderThread.
يتم جمع هذه القياسات في توزيع النسبة المئوية الخمسين والتسعين والخامسة والتسعين والتاسعة والتسعين.
لمزيد من المعلومات حول كيفية تحديد اللقطات البطيئة وتحسينها، يُرجى الاطّلاع على عرض بطيء.
FrameTimingMetric نتائج.TraceSectionMetric
TraceSectionMetric يلتقط عدد مرات ظهور قسم تتبُّع معيّن
ومقدار الوقت المطلق الذي يستغرقه تنفيذه. لتتبُّع الوقت، يعرض الحد الأدنى والمتوسط والحد الأقصى للأوقات بالملّي ثانية.
يتم تحديد قسم التتبُّع المستهدَف إما من خلال استدعاء الدالة
trace(sectionName) أو حدود الكتل ذات المستوى الأدنى بين
Trace.beginSection(sectionName) و Trace.endSection() أو المتغيّرات غير المتزامنة لها. يختار دائمًا المثال الأول لقسم التتبُّع الذي تم التقاطه أثناء القياس. لا يعرض بشكلٍ تلقائي إلا أقسام التتبُّع من حزمتك. لتضمين العمليات خارج حزمتك، اضبط targetPackageOnly =
false.
لمزيد من المعلومات حول التتبُّع، يُرجى الاطّلاع على نظرة عامة على تتبُّع النظام و تحديد الأحداث المخصّصة.
TraceSectionMetricمُقترَحة لك
- ملاحظة: يتم عرض نص الرابط عندما يكون JavaScript غير مفعّل
- إنشاء ملفات شخصية أساسية {:#creating-profile-rules}
- كتابة قياس أداء كبير
- تحليل بدء تشغيل التطبيق وتحسينه {:#app-startup-analysis-optimization}