يشتمل نظام Android على بعض خيارات المطوّرين على الجهاز التي تساعدك في عرض المشاكل التي قد يواجهها تطبيقك في عرض واجهة المستخدم، مثل تنفيذ أعمال عرض أكثر مما يلزم أو تنفيذ سلاسل محادثات طويلة وعمليات وحدة معالجة الرسومات. تصف هذه الصفحة كيفية تصحيح أخطاء تجاوز وحدة معالجة الرسومات وعرض وحدة معالجة الرسومات الملف الشخصي.
للاطّلاع على مزيد من المعلومات عن خيارات المطوّرين على الجهاز فقط، بما في ذلك طريقة تفعيلها، يمكنك قراءة ضبط خيارات المطوّرين على الجهاز فقط.
تحليل سرعة عرض وحدة معالجة الرسومات
تعرض أداة عرض وحدة معالجة الرسومات، كمدرّج تكراري تمرير، تمثيلاً مرئيًا لمقدار الوقت المستغرق لعرض إطارات نافذة واجهة المستخدم بالنسبة إلى مقياس أداء يبلغ 16.67 ملي ثانية لكل إطار.
في وحدات معالجة الرسومات الأقل قوة، يمكن أن يكون معدل التعبئة المتاح (السرعة التي يمكن بها لوحدة معالجة الرسومات التي يمكن أن تملأ بها المخزن المؤقت للإطارات) أن يكون منخفضًا جدًا. ومع ازدياد عدد البكسلات المطلوبة لرسم إطار، قد تستغرق وحدة معالجة الرسومات وقتًا أطول لمعالجة الأوامر الجديدة، وتطلب من بقية النظام الانتظار حتى يتمكن من معالجة الإطار. تساعدك أداة التحليل في تحديد الوقت الذي تربك وحدة معالجة الرسومات فيه بسبب محاولة رسم وحدات البكسل أو تكون مثقلة بسبب تجاوز الحد الأقصى المسموح به.
تفعيل المحلِّل
قبل البدء، احرص على استخدام جهاز يعمل بنظام التشغيل Android 4.1 (المستوى 16 لواجهة برمجة التطبيقات) أو إصدار أحدث، وتأكَّد من تفعيل خيارات المطوّرين. لبدء تحليل عرض وحدة معالجة الرسومات للجهاز أثناء استخدام تطبيقك، اتّبِع الخطوات التالية:
- على جهازك، انتقِل إلى الإعدادات وانقر على خيارات المطوّرين.
- في قسم المراقبة، اختَر عرض وحدة معالجة الرسومات للملف الشخصي أو عرض HWUI للملف الشخصي بناءً على إصدار نظام التشغيل Android الذي يعمل على الجهاز.
- في مربع الحوار "عرض وحدة معالجة الرسومات" في الملف الشخصي، اختَر على الشاشة كأشرطة لإظهار الرسومات البيانية على شاشة جهازك.
- افتح التطبيق الذي تريد إنشاء ملف شخصي له.
فحص الناتج
في الصورة الموسّعة للرسم البياني لعرض وحدة معالجة الرسومات في الملف الشخصي الذي يظهر في الشكل 1، يمكنك رؤية القسم الملوّن، كما هو موضّح في الإصدار Android 6.0 (مستوى واجهة برمجة التطبيقات 23).
الشكل 1. رسم بياني كبير لعرض وحدة معالجة الرسومات الخاصة بالملف الشخصي.
فيما يلي بعض الأشياء التي يجب ملاحظتها حول المخرجات:
- تعرض الأداة رسمًا بيانيًا لكل تطبيق مرئي.
- يمثّل كل شريط عمودي على طول المحور الأفقي إطارًا، ويمثّل ارتفاع كل شريط عمودي المدة الزمنية التي استغرقها عرض الإطار (بالمللي ثانية).
- ويمثل الخط الأخضر الأفقي 16.67 مللي ثانية. لتسجيل 60 لقطة في الثانية، يجب أن يظل الشريط العمودي لكل إطار أسفل هذا الخط. وفي أي وقت يتخطى فيه شريط هذا الخط، قد يتم إيقاف الصور المتحركة مؤقتًا.
- وتسلّط الأداة الضوء على الإطارات التي تتجاوز الحدّ الأقصى البالغ 16.67 ملي ثانية من خلال جعل الشريط المقابل أوسع وأقل شفافية.
- يتضمّن كل شريط مكوّنات ملوّنة يتم ربطها بمرحلة في مسار العرض. ويختلف عدد المكوّنات بناءً على مستوى واجهة برمجة التطبيقات للجهاز.
يقدم الجدول التالي أوصافًا لكل مقطع من الشريط العمودي في مخرجات المحلل عند استخدام جهاز يعمل بالإصدار Android 6.0 والإصدارات الأحدث.
مكوّن الشريط | مرحلة العرض | الوصف |
---|---|---|
تبديل الموارد الاحتياطية | يمثل الوقت الذي تنتظره وحدة المعالجة المركزية (CPU) حتى تنتهي وحدة معالجة الرسومات من عملها. وإذا زاد ارتفاع هذا الشريط، فهذا يعني أن التطبيق يجري الكثير من العمل على وحدة معالجة الرسومات. | |
مشكلة في الأمر | يمثّل هذا المقياس الوقت الذي تقضيه أجهزة العرض الثنائية الأبعاد في Android التي تُصدر أوامر OpenGL لرسم قوائم العرض وإعادة رسمها. يتناسب طول هذا الشريط بشكل مباشر مع إجمالي الوقت الذي تستغرقه كل قائمة عرض في التنفيذ، فالمزيد من قوائم العرض تساوي شريطًا أحمر أطول. | |
المزامنة والتحميل | يمثل الوقت المستغرق لتحميل معلومات الصورة النقطية إلى وحدة معالجة الرسومات. وتشير شريحة كبيرة إلى أنّ التطبيق يستغرق وقتًا طويلاً في تحميل كميات كبيرة من الرسومات. | |
رسم | تمثل الوقت المُستغرَق لإنشاء وتعديل قوائم العرض لطريقة العرض. إذا كان هذا الجزء من الشريط طويلاً، قد يكون هناك الكثير من رسومات العرض المخصّصة أو الكثير من العمل في طرق onDraw. | |
القياس / التخطيط | يمثّل هذا المقياس مقدار الوقت المستغرَق في عمليات استدعاء onLayout وonmeasure في التدرّج الهرمي للملفات الشخصية. تشير شريحة الجمهور الكبيرة إلى أنّ معالجة التدرّج الهرمي للملفات الشخصية تستغرق وقتًا طويلاً. | |
التعامل مع الإدخال والرسوم المتحركة |
يمثّل هذا المقياس الوقت المستغرق لتقييم جميع أدوات الصور المتحركة التي تم تشغيلها لذلك الإطار والتعامل مع جميع طلبات استدعاء الإدخال. إذا كانت هذه الشريحة
كبيرة، يمكن أن يشير ذلك إلى أنّ أداة الصور المتحركة المخصّصة أو معاودة الاتصال بالإدخال تستغرق وقتًا طويلاً في المعالجة. يتم أيضًا إجراء ربط العروض أثناء التنقّل، مثل
RecyclerView.Adapter.onBindViewHolder() ،
عادةً أثناء هذا القسم، وهي مصدر أكثر شيوعًا
لحالات الحركة البطيئة في هذا القسم.
|
|
وقت متنوع / تأخير VSync | يمثّل هذا المقياس الوقت الذي يقضيه التطبيق في تنفيذ العمليات بين إطارَين متتاليَين. قد يشير ذلك إلى حدوث الكثير من عمليات المعالجة في سلسلة محادثات واجهة المستخدم، ما قد يؤدي إلى نقلها إلى سلسلة محادثات مختلفة. |
الجدول 1. أشرطة المكونات في Android 6.0 والإصدارات الأحدث.
تتضمّن إصدارات Android بين الإصدار 4.0 (المستوى 14 لواجهة برمجة التطبيقات) و5.0 (المستوى 21 من واجهة برمجة التطبيقات) شرائح باللون الأزرق والأرجواني والأحمر والبرتقالي. لا تتضمن إصدارات Android الأقدم من 4.0 سوى المكونات الأزرق والأحمر والبرتقالي. يعرض الجدول التالي أشرطة المكوّنات في الإصدارين Android 4.0 و5.0.
مكوّن الشريط | مرحلة العرض | الوصف |
---|---|---|
معالجة | يمثل الوقت الذي تنتظره وحدة المعالجة المركزية (CPU) حتى تنتهي وحدة معالجة الرسومات من عملها. وإذا زاد ارتفاع هذا الشريط، فهذا يعني أن التطبيق يجري الكثير من العمل على وحدة معالجة الرسومات. | |
تنفيذ | يمثّل هذا المقياس الوقت الذي تقضيه أجهزة العرض الثنائية الأبعاد في Android التي تُصدر أوامر OpenGL لرسم قوائم العرض وإعادة رسمها. يتناسب طول هذا الشريط بشكل مباشر مع إجمالي الوقت الذي تستغرقه كل قائمة عرض في التنفيذ، فالمزيد من قوائم العرض تساوي شريطًا أحمر أطول. | |
إكسفير | يمثل الوقت المستغرق لتحميل معلومات الصورة النقطية إلى وحدة معالجة الرسومات. وتشير شريحة كبيرة إلى أنّ التطبيق يستغرق وقتًا طويلاً في تحميل كميات كبيرة من الرسومات. ولا تظهر هذه الشريحة على الأجهزة التي تعمل بالإصدار 4.0 من نظام التشغيل Android أو الإصدارات الأقدم. | |
تعديل | تمثل الوقت المُستغرَق لإنشاء وتعديل قوائم العرض لطريقة العرض. إذا كان هذا الجزء من الشريط طويلاً، قد يكون هناك الكثير من رسومات العرض المخصّصة أو الكثير من العمل في طرق onDraw. |
الجدول 2. أشرطة المكونات في الإصدارين Android 4.0 و5.0.
لمزيد من المعلومات حول كيفية تفسير المعلومات التي توفرها أداة التحليل، اقرأ التحليل باستخدام عرض وحدة معالجة الرسومات للملف الشخصي.
ملاحظة: تُسمَّى هذه الأداة "عرض وحدة معالجة الرسومات" (Profile GPU)، ولكن جميع العمليات الخاضعة للمراقبة تحدث بالفعل في وحدة المعالجة المركزية (CPU). يتم العرض من خلال إرسال الأوامر إلى وحدة معالجة الرسومات، وفي الوقت نفسه تعرض وحدة معالجة الرسومات الشاشة بشكل غير متزامن. في بعض الحالات، قد تحتاج وحدة معالجة الرسومات إلى جهد كبير لتنفيذها، وسيضطر وحدة المعالجة المركزية إلى الانتظار قبل أن تتمكن من إرسال أوامر جديدة. عندما يحدث ذلك، سترى الارتفاعات المفاجئة في الشريطين البرتقاليين والأحمرين، وسيتم حظر إرسال الأوامر إلى أن يتم توفير مساحة إضافية في قائمة انتظار أوامر وحدة معالجة الرسومات.
عرض تجاوز الحد الأقصى لوحدة معالجة الرسومات
تساعدك ميزة أخرى في خيارات المطورين في تحديد تجاوز الحد من خلال ترميز واجهة المستخدم الخاصة بك. يحدث تجاوز الحد المسموح به عندما يرسم تطبيقك وحدة البكسل نفسها أكثر من مرة داخل الإطار نفسه. يُظهر هذا التصور المكان الذي يُجري فيه تطبيقك أعمال عرض أكثر مما يلزم، وهو ما قد يمثل مشكلة في الأداء بسبب المجهود الإضافي في وحدة معالجة الرسومات لعرض وحدات البكسل التي لن تكون مرئية للمستخدم. لذلك، عليك إصلاح أحداث تجاوز الأداء متى أمكن ذلك.
فعِّل "خيارات المطوّرين" إذا لم يسبق لك ذلك. بعد ذلك، لعرض ميزة تجاوز الحد الأقصى على جهازك، اتّبِع الخطوات التالية:
- على جهازك، انتقِل إلى الإعدادات وانقر على خيارات المطوّرين.
- مرِّر لأسفل إلى قسم العرض المسرّع للأجهزة، واختَر تصحيح أخطاء GPU Overdraw.
- في مربّع الحوار تصحيح أخطاء تجاوز حد وحدة معالجة الرسومات، اختَر عرض مناطق تجاوز الحد الأقصى.
عناصر واجهة المستخدم الملونة لنظام Android لتحديد مقدار تجاوز الحد على النحو التالي:
- اللون الحقيقي: بدون تجاوز
أزرق: تم تجاوز الهدف مرة واحدة
الأخضر: تم تجاوز الحد الأقصى مرتين
زهري: تم تجاوز الحد 3 مرات
الأحمر: تم تجاوز الحد 4 مرات أو أكثر
![](https://developer.android.google.cn/static/topic/performance/images/gpu/gpu-overdraw-before_2x.png?authuser=5&hl=ar)
الشكل 2. تطبيق كما يظهر عادةً (على اليسار)، وكما يظهر مع تفعيل ميزة "تجاوز وحدة معالجة الرسومات" (يمينًا)
لاحِظ أنّ هذه الألوان شبه شفافة، وبالتالي يعتمد اللون الدقيق الذي تراه على الشاشة على محتوى واجهة المستخدم.
الآن بعد أن تعرّفت على موضع تجاوز الحدّ في التنسيق، يمكنك الاطّلاع على كيفية الحدّ من تجاوز الحد الأقصى.
تذكر أن بعض المبالغة لا مفر منها. أثناء ضبط واجهة المستخدم الخاصة بتطبيقك، حاوِل الوصول إلى عرض مرئي يُظهر في الغالب ألوانًا حقيقية أو تكرارًا مفرطًا بمعدّل 1X (اللون الأزرق).
![](https://developer.android.google.cn/static/topic/performance/images/gpu/gpu-overdraw-after_2x.png?authuser=5&hl=ar)
الشكل 3. أمثلة على تطبيق يتضمّن قدرًا كبيرًا من تجاوز الحد (يسارًا) وتجاوزًا أقل بكثير (في اليمين)