اینڈرائیڈ ایپ اسٹارٹ اپ کے لیے پروفائل گائیڈڈ آپٹیمائزیشن (Profile-Guided Optimization)

ہم نے اپنے اینڈرائیڈ کولڈ اسٹارٹ (cold start) کو 1.2s سے کم کر کے 380ms کر دیا۔

زیادہ تر ایپس پہلی بار چلتے وقت سب سے سست کمپلیشن موڈ (compilation mode) پر چلتی ہیں۔ جب کوئی صارف پہلی بار آپ کی ایپ انسٹال کرتا ہے تو اینڈرائیڈ "interpret-only" موڈ استعمال کرتا ہے۔ یہ آپ کے اسٹارٹ اپ کو سست بنا دیتا ہے۔ سسٹم بعد میں صرف فارغ وقت (idle time) کے دوران کوڈ کو آپٹیمائز کرتا ہے۔

آپ اسے تین مرحلہ وار پائپ لائن (pipeline) کے ذریعے ٹھیک کر سکتے ہیں۔

  1. Baseline Profiles تیار کریں Baseline Profiles سسٹم کو بتاتے ہیں کہ انسٹالیشن کے وقت کن کلاسز (classes) کو کمپائل کرنا ہے۔ اپنے CI پائپ لائن میں انہیں بنانے کے لیے Macrobenchmark کا استعمال کریں۔ ہمارے پروفائلز نے صرف 12% میتھڈز (methods) کا احاطہ کیا لیکن 94% اسٹارٹ اپ وقت کو سنبھالا۔

  2. DEX Layout Reordering کو فعال کریں یہ آپ کی Gradle properties میں صرف ایک لائن کا کام ہے۔ یہ R8 کو بتاتا ہے کہ آپ کی DEX فائل میں اسٹارٹ اپ کلاسز کو ایک ساتھ گروپ کر دے۔ یہ پیج فالٹس (page faults) کو 30% سے 50% تک کم کر دیتا ہے۔ جب کلاسز ایک ساتھ رہتی ہیں، تو سسٹم ڈسک سے کم غیر ضروری ڈیٹا لوڈ کرتا ہے۔

  3. Cloud Profiles کا استعمال کریں Google Play صارفین سے پروفائلز جمع کرتا ہے اور انہیں نئی انسٹالیشنز کو بھیجتا ہے۔ یہ آپ کی رفتار میں ہونے والے اضافے کو مزید بڑھا دیتا ہے۔

ہمارے ٹیسٹنگ کے نتائج:

آپ کے ورک فلو (workflow) کے لیے اہم تجاویز:

تیز تر ایپس بنانے کے لیے ان تہوں (layers) کو ایک ساتھ استعمال کریں۔

ماخذ (Source): https://dev.to/software_mvp-factory/profile-guided-optimization-for-android-app-startup-2i7a