𝗣𝗿𝗼𝗳𝗶𝗹𝗲-𝗚𝘂𝗶𝗱𝗲𝗱 𝗢𝗽𝘁𝗶𝗺𝗶𝘇𝗮𝘁𝗶𝗼𝗻 𝗳𝗼𝗿 𝗔𝗻𝗱𝗿𝗼𝗶𝗱 𝗔𝗽𝗽 𝗦𝘁𝗮𝗿𝘁𝘂𝗽
Kami memangkas cold start Android kami dari 1,2 detik menjadi 380ms.
Sebagian besar aplikasi berjalan pada mode kompilasi terlambat saat peluncuran pertama. Android menggunakan mode "interpret-only" saat pengguna pertama kali menginstal aplikasi Anda. Hal ini membuat startup menjadi lambat. Sistem baru akan mengoptimalkan kode saat waktu luang (idle time) di kemudian hari.
Anda dapat memperbaikinya menggunakan alur kerja (pipeline) tiga langkah.
Hasilkan Baseline Profiles Baseline Profiles memberi tahu sistem kelas mana yang harus dikompilasi pada saat instalasi. Gunakan Macrobenchmark untuk membuatnya di dalam pipeline CI Anda. Profil kami mencakup 12% metode tetapi menangani 94% waktu startup.
Aktifkan DEX Layout Reordering Ini hanya satu baris di properti Gradle Anda. Ini memerintahkan R8 untuk mengelompokkan kelas-kelas startup bersama-sama dalam file DEX Anda. Hal ini mengurangi page faults sebesar 30% hingga 50%. Ketika kelas-kelas tetap bersama, sistem memuat lebih sedikit data yang tidak berguna dari disk.
Gunakan Cloud Profiles Google Play mengumpulkan profil dari pengguna dan mengirimkannya ke instalasi baru. Ini akan melipatgandakan peningkatan kecepatan Anda.
Hasil pengujian kami:
- Tanpa profil: cold start 1.204ms
- Hanya Baseline Profile: cold start 620ms
- Baseline + DEX reorder: cold start 445ms
- Baseline + DEX reorder + Cloud: cold start 380ms
Tips penting untuk alur kerja Anda:
- Hasilkan profil di CI untuk setiap rilis. Profil yang usang (stale) menyebabkan penurunan performa.
- Hasilkan ulang profil setelah R8 berjalan. R8 mengubah struktur kode Anda.
- Gunakan mode kompilasi "Partial" di Macrobenchmark. Mode "Full" memberikan hasil palsu yang tidak mencerminkan pengalaman pengguna yang sebenarnya.
- Uji pada versi Android yang berbeda. Peningkatan performa bervariasi antara level API lama dan baru.
Tumpuk lapisan-lapisan ini untuk membangun aplikasi yang lebih cepat.
Sumber: https://dev.to/software_mvp-factory/profile-guided-optimization-for-android-app-startup-2i7a