Android Uygulama Başlatma Süreci İçin Profil Rehberliğinde Optimizasyon

Android soğuk başlatma (cold start) süremizi 1,2 saniyeden 380 ms'ye düşürdük.

Çoğu uygulama, ilk başlatma sırasında en yavaş derleme modunda çalışır. Android, bir kullanıcı uygulamanızı ilk kez yüklediğinde "interpret-only" (yalnızca yorumlama) modunu kullanır. Bu, uygulamanızın başlatılmasını yavaşlatır. Sistem, kodu ancak daha sonraki boş zamanlarda (idle time) optimize eder.

Bunu üç adımlı bir boru hattı (pipeline) kullanarak düzeltebilirsiniz.

  1. Baseline Profile'lar Oluşturun Baseline Profile'lar, sisteme yükleme sırasında hangi sınıfların derleneceğini söyler. Bunları CI boru hattınızda oluşturmak için Macrobenchmark kullanın. Profilimiz metodların %12'sini kapsadı ancak başlatma süresinin %94'ünü yönetti.

  2. DEX Düzeni Yeniden Sıralamasını (Layout Reordering) Etkinleştirin Bu, Gradle özelliklerinizde (properties) tek bir satırdır. R8'e, DEX dosyanızdaki başlatma sınıflarını bir araya getirmesini söyler. Bu, sayfa hatalarını (page faults) %30 ile %50 arasında azaltır. Sınıflar bir arada kaldığında, sistem diskten daha az gereksiz veri yükler.

  3. Cloud Profile'ları Kullanın Google Play, kullanıcılardan profilleri toplar ve bunları yeni yüklemelere gönderir. Bu, hız kazanımlarınızı katlar.

Testlerimizin sonuçları:

İş akışınız için önemli ipuçları:

Daha hızlı uygulamalar oluşturmak için bu katmanları üst üste ekleyin.

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