Upataji wa Utendaji Unaongozwa na Profaili (Profile-Guided Optimization) kwa Ajili ya Kuanza kwa Programu za Android
Tulipunguza muda wa kuanza kwa Android (cold start) kutoka sekunde 1.2 hadi 380ms.
Programu nyingi hutumia mfumo wa uundaji (compilation mode) ambao ni wa polepole zaidi wakati wa uzinduzi wa kwanza. Android hutumia mfumo wa "interpret-only" wakati mtumiaji anapoweka programu yako kwa mara ya kwanza. Hii hufanya kuanza kwa programu kuwa polepole. Mfumo huuboresha (optimize) msimbo wakati tu wa muda wa mapumziko (idle time) baadaye.
Unaweza kurekebisha hili kwa kutumia mchakato wa hatua tatu.
Tengeneza Baseline Profiles Baseline Profiles huambia mfumo ni madarasa (classes) gani ya uundaji (compile) wakati wa uwekaji (install time). Tumia Macrobenchmark kutengeneza hizi kwenye mchakato wako wa CI. Profaili zetu zilijumuisha 12% ya mbinu (methods) lakini zilidhibiti 94% ya muda wa kuanza.
Washa DEX Layout Reordering Hii ni mstari mmoja tu kwenye sifa zako za Gradle. Inaiambia R8 kuweka madarasa ya kuanza pamoja kwenye faili yako ya DEX. Hii hupunguza makosa ya ukurasa (page faults) kwa 30% hadi 50%. Madarasa yanapobaki pamoja, mfumo hupakia data zisizo na lazima kidogo kutoka kwenye diski.
Tumia Cloud Profiles Google Play hukusanya profaili kutoka kwa watumiaji na kuzituma kwa programu zinazowekwa upya. Hii huongeza zaidi faida zako za kasi.
Matokeo ya majaribio yetu:
- Bila profaili: kuanza kwa 1,204ms (cold start)
- Baseline Profile pekee: kuanza kwa 620ms (cold start)
- Baseline + DEX reorder: kuanza kwa 445ms (cold start)
- Baseline + DEX reorder + Cloud: kuanza kwa 380ms (cold start)
Vidokezo muhimu kwa mtiririko wako wa kazi:
- Tengeneza profaili kwenye CI kwa kila toleo (release). Profaili zilizopitwa na wakati husababisha upotevu wa utendaji.
- Tengeneza upya profaili baada ya R8 kukamilisha kazi yake. R8 hubadilisha muundo wa msimbo wako.
- Tumia mfumo wa uundaji wa "Partial" kwenye Macrobenchmark. Mfumo wa "Full" hutoa matokeo ya uongo ambayo hayawakilishi uzoefu halisi wa mtumiaji.
- Jaribu kwenye matoleo tofauti ya Android. Faida za utendaji hutofautiana kati ya viwango vya API vya zamani na vipya.
Unganisha tabaka hizi ili kutengeneza programu zenye kasi zaidi.
Chanzo: https://dev.to/software_mvp-factory/profile-guided-optimization-for-android-app-startup-2i7a