قياس معياري

تتيح لك مكتبة Jetpack Micro المعيارية قياس أداء الرمز الأصلي (Kotlin أو Java) لنظام التشغيل Android من داخل "استوديو Android". تتناول المكتبة عملية الإحماء، وتقيس أداء الرموز وأعداد التخصيص، وتُخرج نتائج قياس الأداء لكل من وحدة تحكّم استوديو Android وملف JSON يتضمّن مزيدًا من التفاصيل.

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

تُعدّ مقاييس الأداء المصغّرة مفيدة للغاية بالنسبة إلى عمل وحدة المعالجة المركزية (CPU) الذي يتم تشغيله عدة مرات في تطبيقك، وتُعرف أيضًا باسم مسارات الرموز الساخنة. من الأمثلة الجيدة على ذلك التمرير في RecyclerView مع عرض عنصر واحد في كل مرة، وعمليات تحويل البيانات أو معالجتها، وأجزاء أخرى من الرمز يتم استخدامها بشكل متكرّر.

ويصعب قياس الأنواع الأخرى من التعليمات البرمجية باستخدام مكتبة المعايير الجزئية. ونظرًا لأن مقاييس الأداء تعمل في حلقة التكرار، فإن أي رمز لا يتم تشغيله بشكل متكرر أو يعمل بشكل مختلف عند استدعائه عدة مرات قد لا يكون مناسبًا لقياس الأداء.

للتعرّف على كيفية استخدام المكتبة في بيئة الدمج المستمر (CI)، يمكنك الاطّلاع على المقالة تنفيذ مقاييس الأداء في عملية الدمج المستمر.

تجنُّب قياس ذاكرة التخزين المؤقت

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

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

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

قفل الساعات (يتطلب جهاز مزوّد بإذن الوصول إلى الجذر)

إنّ قفل الساعات هو أفضل طريقة للحصول على أداء ثابت. فهو يساعد على ضمان عدم ارتفاع درجة حرارة الساعة بما يكفي مطلقًا لتسخين الجهاز، أو خفضه إذا لم يستخدم مقياس الأداء وحدة المعالجة المركزية (CPU) بشكل كامل. ويمكن تطبيقها مع مهمة Gradle (gradlew lockClocks)، أو يدويًا في CI. هذه هي أفضل طريقة للمساعدة في ضمان تحقيق أداء مستقر، ولكنها غير متوافقة مع معظم الأجهزة، وذلك بسبب الحاجة إلى جهاز Android مزوّد بإذن الوصول إلى الجذر.

وضع الأداء المستدام

Window.setSustainedPerformanceMode() هي ميزة متوافقة مع الأجهزة التي تسمح للتطبيق باختيار الحد الأقصى لتكرار وحدة المعالجة المركزية (CPU). وعند تشغيل مكتبة المعيار المصغر على الأجهزة المتوافقة، تستخدم واجهة برمجة التطبيقات هذه مزيجًا من البيانات وتطلق نشاطها الخاص لمنع التقييد الحراري وتثبيت النتائج.

يتم تفعيل هذه الميزة تلقائيًا من خلال testInstrumentationRunner الذي تم ضبطه من خلال المكوّن الإضافي لنظام Gradle المتوافق مع Android. إذا كنت تريد استخدام عدّاء مخصّص، يمكنك تصنيف AndroidBenchmarkRunner بشكل فرعي من خلال استخدام عدّاءات testInstrumentationRunner.

يبدأ الجري نشاطًا بملء الشاشة معتمًا لضمان عمل مقياس الأداء في المقدمة وبدون أي رسم تطبيق آخر.

الإيقاف المؤقت للتنفيذ التلقائي

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

عيّنات

يمكنك الاطّلاع على النماذج التالية في مستودع جيت هب:

مراجع إضافية

تقديم ملاحظات

للإبلاغ عن مشكلات أو إرسال طلبات ميزات عند استخدام قياس الأداء، راجع أداة تتبع المشكلات العامة.