التحسين الموجه بالملفات التعريفية (Profile-Guided Optimization) لبدء تشغيل تطبيقات Android

لقد قمنا بتقليل وقت بدء التشغيل البارد (cold start) لتطبيق Android الخاص بنا من 1.2 ثانية إلى 380 مللي ثانية.

تعمل معظم التطبيقات في أبطأ وضع تجميع (compilation mode) خلال التشغيل الأول. يستخدم Android وضع "التفسير فقط" (interpret-only) عندما يقوم المستخدم بتثبيت تطبيقك لأول مرة، مما يجعل بدء التشغيل بطيئًا. لا يقوم النظام بتحسين الكود إلا أثناء وقت الخمول لاحقًا.

يمكنك إصلاح ذلك باستخدام مسار عمل مكون من ثلاث خطوات.

  1. إنشاء Baseline Profiles تُخبر الـ Baseline Profiles النظام بالـ classes التي يجب تجميعها وقت التثبيت. استخدم Macrobenchmark لإنشاء هذه الملفات في مسار CI الخاص بك. غطت ملفاتنا التعريفية 12% من الـ methods ولكنها تولت 94% من وقت بدء التشغيل.

  2. تفعيل إعادة ترتيب تخطيط DEX هذا عبارة عن سطر واحد في ملف Gradle properties الخاص بك. يخبر R8 بتجميع الـ startup classes معًا في ملف DEX الخاص بك. يقلل هذا من أخطاء الصفحات (page faults) بنسبة تتراوح بين 30% إلى 50%. عندما تظل الـ classes معًا، يقوم النظام بتحميل بيانات أقل غير ضرورية من القرص.

  3. استخدام Cloud Profiles يقوم Google Play بجمع الملفات التعريفية من المستخدمين وإرسالها إلى عمليات التثبيت الجديدة، مما يضاعف مكاسب السرعة لديك.

نتائج اختباراتنا:

نصائح مهمة لسير عملك:

قم بتكديس هذه الطبقات لبناء تطبيقات أسرع.

المصدر: https://dev.to/software_mvp-factory/profile-guided-optimization-for-android-app-startup-2i7a