Pengoptimuman Berpandukan Profil untuk Permulaan Aplikasi Android
Kami mengurangkan masa cold start Android kami daripada 1.2s kepada 380ms.
Kebanyakan aplikasi berjalan dalam mod kompilasi yang paling perlahan semasa pelancaran pertama. Android menggunakan mod "interpret-only" apabila pengguna mula-mula memasang aplikasi anda. Ini menyebabkan permulaan aplikasi menjadi perlahan. Sistem hanya mengoptimumkan kod semasa waktu terbiar (idle time) kemudiannya.
Anda boleh mengatasi masalah ini menggunakan saluran paip (pipeline) tiga langkah.
Jana Baseline Profiles Baseline Profiles memberitahu sistem kelas mana yang perlu dikompil semasa waktu pemasangan. Gunakan Macrobenchmark untuk menciptanya dalam saluran paip CI anda. Profil kami merangkumi 12% kaedah (methods) tetapi mengendalikan 94% daripada masa permulaan.
Aktifkan DEX Layout Reordering Ini hanyalah satu baris dalam properti Gradle anda. Ia memberitahu R8 untuk mengumpulkan kelas-kelas permulaan bersama-sama dalam fail DEX anda. Ini mengurangkan ralat halaman (page faults) sebanyak 30% hingga 50%. Apabila kelas-kelas kekal bersama, sistem memuatkan kurang data yang tidak berguna daripada cakera (disk).
Gunakan Cloud Profiles Google Play mengumpul profil daripada pengguna dan menghantarnya kepada pemasangan baharu. Ini akan menggandakan peningkatan kelajuan anda.
Keputusan ujian kami:
- Tanpa profil: 1,204ms cold start
- Baseline Profile sahaja: 620ms cold start
- Baseline + DEX reorder: 445ms cold start
- Baseline + DEX reorder + Cloud: 380ms cold start
Tip penting untuk aliran kerja anda:
- Jana profil dalam CI untuk setiap pelancaran. Profil yang lapuk (stale) menyebabkan kehilangan prestasi.
- Jana semula profil selepas R8 dijalankan. R8 mengubah struktur kod anda.
- Gunakan mod kompilasi "Partial" dalam Macrobenchmark. Mod "Full" memberikan keputusan palsu yang tidak mencerminkan pengalaman pengguna sebenar.
- Uji pada versi Android yang berbeza. Peningkatan prestasi berbeza antara tahap API lama dan baharu.
Gabungkan lapisan-lapisan ini untuk membina aplikasi yang lebih pantas.
Sumber: https://dev.to/software_mvp-factory/profile-guided-optimization-for-android-app-startup-2i7a