اینڈرائیڈ ایپ اسٹارٹ اپ کے لیے پروفائل گائیڈڈ آپٹیمائزیشن (Profile-Guided Optimization)
ہم نے اپنے اینڈرائیڈ کولڈ اسٹارٹ (cold start) کو 1.2s سے کم کر کے 380ms کر دیا۔
زیادہ تر ایپس پہلی بار چلتے وقت سب سے سست کمپلیشن موڈ (compilation mode) پر چلتی ہیں۔ جب کوئی صارف پہلی بار آپ کی ایپ انسٹال کرتا ہے تو اینڈرائیڈ "interpret-only" موڈ استعمال کرتا ہے۔ یہ آپ کے اسٹارٹ اپ کو سست بنا دیتا ہے۔ سسٹم بعد میں صرف فارغ وقت (idle time) کے دوران کوڈ کو آپٹیمائز کرتا ہے۔
آپ اسے تین مرحلہ وار پائپ لائن (pipeline) کے ذریعے ٹھیک کر سکتے ہیں۔
Baseline Profiles تیار کریں Baseline Profiles سسٹم کو بتاتے ہیں کہ انسٹالیشن کے وقت کن کلاسز (classes) کو کمپائل کرنا ہے۔ اپنے CI پائپ لائن میں انہیں بنانے کے لیے Macrobenchmark کا استعمال کریں۔ ہمارے پروفائلز نے صرف 12% میتھڈز (methods) کا احاطہ کیا لیکن 94% اسٹارٹ اپ وقت کو سنبھالا۔
DEX Layout Reordering کو فعال کریں یہ آپ کی Gradle properties میں صرف ایک لائن کا کام ہے۔ یہ R8 کو بتاتا ہے کہ آپ کی DEX فائل میں اسٹارٹ اپ کلاسز کو ایک ساتھ گروپ کر دے۔ یہ پیج فالٹس (page faults) کو 30% سے 50% تک کم کر دیتا ہے۔ جب کلاسز ایک ساتھ رہتی ہیں، تو سسٹم ڈسک سے کم غیر ضروری ڈیٹا لوڈ کرتا ہے۔
Cloud Profiles کا استعمال کریں Google Play صارفین سے پروفائلز جمع کرتا ہے اور انہیں نئی انسٹالیشنز کو بھیجتا ہے۔ یہ آپ کی رفتار میں ہونے والے اضافے کو مزید بڑھا دیتا ہے۔
ہمارے ٹیسٹنگ کے نتائج:
- کوئی پروفائل نہیں: 1,204ms کولڈ اسٹارٹ
- صرف Baseline Profile: 620ms کولڈ اسٹارٹ
- Baseline + DEX reorder: 445ms کولڈ اسٹارٹ
- Baseline + DEX reorder + Cloud: 380ms کولڈ اسٹارٹ
آپ کے ورک فلو (workflow) کے لیے اہم تجاویز:
- ہر ریلیز کے لیے CI میں پروفائلز تیار کریں۔ پرانے (stale) پروفائلز کارکردگی میں کمی کا باعث بنتے ہیں۔
- R8 چلنے کے بعد پروفائلز کو دوبارہ تیار کریں۔ R8 آپ کے کوڈ کے ڈھانچے کو تبدیل کر دیتا ہے۔
- Macrobenchmark میں "Partial" کمپلیشن موڈ استعمال کریں۔ "Full" موڈ غلط نتائج دیتا ہے جو حقیقی صارف کے تجربے کی عکاسی نہیں کرتے۔
- مختلف اینڈرائیڈ ورژنز پر ٹیسٹ کریں۔ پرانے اور نئے API لیولز کے درمیان کارکردگی کے فوائد مختلف ہو سکتے ہیں۔
تیز تر ایپس بنانے کے لیے ان تہوں (layers) کو ایک ساتھ استعمال کریں۔
ماخذ (Source): https://dev.to/software_mvp-factory/profile-guided-optimization-for-android-app-startup-2i7a