Başarılı Örnekler

Monzo, basit bir R8 güncellemesiyle performans metriklerini% 35'e kadar artırıyor

Okuma süresi: 2 dk.

Monzo, Birleşik Krallık'ta 15 milyon müşterisi olan ve büyümeye devam eden bir dijital bankadır. Uygulama büyüdükçe mühendislik ekibi, uygulamanın başlatma süresinin iyileştirilmesi gereken kritik bir alan olduğunu belirledi ancak bunun için kod tabanlarında önemli değişiklikler yapılması gerektiğinden endişe duydu.

Monzo, R8 optimizasyonlarını tamamen etkinleştirerek Uygulama Yanıt Vermiyor (ANR) oranında% 35'lik büyük bir düşüş elde etti. Bu basit değişiklik, etkili optimizasyonların her zaman karmaşık mühendislik çalışmaları gerektirmediğini kanıtladı.

R8 tam moduyla geniş performans kazanımları elde etme

Monzo, R8 tam modunun denemeye değer kolay bir çözüm olduğunu tespit etti ve bu çözüm, genel olarak performansı artırdı:

  • Başlatma güvenilirliği: Baştan başlatma %30, hazırda başlatma %24 ve çalışır durumda başlatma %14 oranında iyileştirildi.
  • Başlatma hızı: P50 başlatma süreleri% 11, P90 başlatma süreleri ise %12 oranında iyileştirildi.
  • Verimlilik: Genel uygulama boyutu %9 oranında küçültüldü.
  • Kararlılık: ANR'de %35 azalma.
AANDDM_Monzo_Quote-1.png
large_AANDDM_Monzo_Quote-2.png

Tek bir değişiklikle optimizasyonları etkinleştirme

Birçok Android uygulaması, R8 optimizasyon aracının çoğu işlevini devre dışı bırakan eski bir varsayılan yapılandırma dosyası kullanır. Monzo'nun bu performans iyileştirmelerini elde etmek için yaptığı temel değişiklik, varsayılan proguard-android.txt dosyasını proguard-android-optimize.txt ile değiştirmek oldu. Bu değişiklik, -dontoptimize talimatını kaldırır ve R8'in işini düzgün bir şekilde yapmasına olanak tanır.

buildTypes {
  release {
    isMinifyEnabled = true
    isShrinkResources = true
    proguardFiles(
      getDefaultProguardFile("proguard-android-optimize.txt"),
    )
  }
}

Bu değişikliği yaptıktan sonra Keep yapılandırma dosyalarınıza göz atmanız faydalı olabilir. Bu dosyalar, R8'e kodunuzun hangi bölümlerine dokunmaması gerektiğini söyler (genellikle dinamik olarak veya harici kitaplıklar tarafından çağrıldıkları için). Gereksiz Keep kurallarını temizlemek, R8'in daha fazla işlem yapabileceği anlamına gelir.

Temel Profiller ile kaydırma performansını iyileştirme

Monzo, kullanıcı deneyimini daha da iyileştirmek için temel profilleri uygulayarak özellikle ana feed'indeki kaydırma ve oluşturma performansını hedefledi. Bu strateji, en yaygın kullanıcı yolculuklarının (uygulamayı açma ve feed'de gezinme) tamamen optimize edilmesini sağladı. Oluşturma üzerindeki etki önemliydi: P90 kaydırma performansı% 71 daha hızlı hale geldi ve P95 kaydırma performansı %87 arttı. Artık uygulamada kaydırma işlemi daha sorunsuz bir şekilde yapılıyor.

Monzo, bu iyileştirmeleri zaman içinde sürdürmek için bu özelliği yayınlama sürecine dahil etti. Neumayer,"Her hafta içi (gecelik derlemelerimizi çalıştırmadan önce) temel profil oluşturma işlemini tetikliyor ve tamamlandıktan sonra en son değişiklikleri uyguluyoruz" diyor.

Modern Android geliştirmeye ayak uydurma

Monzo'nun deneyimi, Android derleme aracı önerilerini takip ettiğinizde neler yapabileceğinizi gösteriyor. Eski uygulamalar genellikle karmaşık yansıma kullanımıyla ilgili sorunlar yaşarken Monzo, Keep kurallarını doğru şekilde belgeleyerek geçişi kolaylaştırdı. Neumayer, "Saklama kurallarının neden uygulandığını açıklayan bir yorumu her zaman ekliyoruz. Böylece kuralları ne zaman güvenle kaldırabileceğimizi biliyoruz" diyor.

Neumayer'ın diğer ekiplere tavsiyesi ne? Uygulamalarınızı mevcut standartlara göre düzenli olarak kontrol edin: "Google'ın uygulama performansıyla ilgili en son önerilerine göz atın ve en son tavsiyelerin tümüne uyup uymadığınızı kontrol edin."

Başlamak ve R8 hakkında daha fazla bilgi edinmek için https://d.android.com/r8 adresini ziyaret edin.

Yazan:
Okumaya devam et