Android App Startup के लिए Profile-Guided Optimization

हमने अपने Android cold start को 1.2s से घटाकर 380ms कर दिया।

अधिकांश ऐप्स पहली बार लॉन्च होने पर सबसे धीमे compilation mode पर चलते हैं। जब कोई यूजर पहली बार आपका ऐप इंस्टॉल करता है, तो Android "interpret-only" mode का उपयोग करता है। इससे आपका स्टार्टअप धीमा हो जाता है। सिस्टम बाद में केवल idle time के दौरान ही कोड को optimize करता है।

आप इसे तीन-चरणीय (three-step) पाइपलाइन का उपयोग करके ठीक कर सकते हैं।

  1. Baseline Profiles जेनरेट करें Baseline Profiles सिस्टम को बताते हैं कि इंस्टॉलेशन के समय किन classes को compile करना है। इन्हें अपने CI pipeline में बनाने के लिए Macrobenchmark का उपयोग करें। हमारे profiles ने केवल 12% methods को कवर किया लेकिन स्टार्टअप समय का 94% हिस्सा संभाल लिया।

  2. DEX Layout Reordering सक्षम करें यह आपकी Gradle properties में केवल एक लाइन का काम है। यह R8 को आपकी DEX file में startup classes को एक साथ ग्रुप करने के लिए कहता है। इससे page faults में 30% से 50% तक की कमी आती है। जब classes एक साथ रहती हैं, तो सिस्टम डिस्क से कम बेकार डेटा लोड करता है।

  3. Cloud Profiles का उपयोग करें Google Play यूजर्स से profiles इकट्ठा करता है और उन्हें नए इंस्टॉलेशन पर भेजता है। यह आपकी स्पीड में होने वाले सुधार को कई गुना बढ़ा देता है।

हमारे टेस्टिंग के परिणाम:

आपके वर्कफ़्लो के लिए महत्वपूर्ण टिप्स:

तेज़ ऐप्स बनाने के लिए इन लेयर्स को एक साथ जोड़ें।

Source: https://dev.to/software_mvp-factory/profile-guided-optimization-for-android-app-startup-2i7a