Case Studies

Monzo aumenta le metriche di rendimento fino al 35% con un semplice aggiornamento R8

Lettura di 2 minuti
Ben Weiss
Ingegnere per le relazioni con gli sviluppatori

Monzo è una banca digitale del Regno Unito con 15 milioni di clienti e in continua crescita. Con lo scale up dell'app, il team di ingegneria ha identificato il tempo di avvio dell'app come un'area critica da migliorare, ma temeva che ciò richiedesse modifiche significative alla codebase.

Abilitando completamente le ottimizzazioni R8, Monzo ha ottenuto una riduzione massiccia del 35% della frequenza di errori "L'applicazione non risponde" (ANR). Questa semplice modifica ha dimostrato che le ottimizzazioni di impatto non richiedono sempre sforzi di ingegneria complessi.

Sbloccare miglioramenti del rendimento su vasta scala con la modalità completa di R8

Monzo ha identificato la modalità completa di R8 come una soluzione semplice da provare e ha funzionato, migliorando il rendimento su tutta la linea:

  • Affidabilità dell'avvio: gli avvii a freddo sono migliorati del 30%, quelli a caldo del 24% e quelli a caldo del 14%.
  • Velocità di lancio: i tempi di lancio P50 sono migliorati dell'11% e quelli P90 del 12%.
  • Efficienza: le dimensioni complessive dell'app sono state ridotte del 9%.
  • Stabilità: riduzione degli errori ANR del 35%.
AANDDM_Monzo_Quote-1.png
large_AANDDM_Monzo_Quote-2.png

Abilitare le ottimizzazioni con una singola modifica

Molte app Android utilizzano un file di configurazione predefinito obsoleto che disabilita la maggior parte delle funzionalità dell'ottimizzatore R8. La modifica principale apportata da Monzo per sbloccare questi miglioramenti del rendimento è stata la sostituzione del file predefinito proguard-android.txt con proguard-android-optimize.txt. Questa modifica rimuove l'istruzione -dontoptimize e consente a R8 di svolgere correttamente il proprio lavoro.

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

Dopo aver apportato questa modifica, ti consigliamo di esaminare i file di configurazione Keep. Questi file indicano a R8 quali parti del codice lasciare invariate (di solito perché vengono chiamate dinamicamente o da librerie esterne). La pulizia delle regole Keep non necessarie consente a R8 di fare di più.

Migliorare il rendimento dello scorrimento con i profili di baseline

Per migliorare ulteriormente l'esperienza utente, Monzo ha implementato i profili di baseline, rivolgendosi in particolare al rendimento di scorrimento e rendering nel feed principale. Questa strategia ha garantito che i percorsi utente più comuni, ovvero l'apertura dell'app e lo scorrimento del feed, fossero completamente ottimizzati. L'impatto sul rendering è stato sostanziale: il rendimento di scorrimento P90 è diventato il 71% più veloce e quello P95 è migliorato dell'87%. Ora lo scorrimento dell'app è più fluido di prima.

Monzo ha integrato questa funzionalità nel processo di release per mantenere questi miglioramenti nel tempo. "Attiviamo la generazione del profilo di baseline ogni giorno della settimana (prima di eseguire le build notturne) e applichiamo le ultime modifiche al termine", spiega Neumayer.

Tenersi al passo con lo sviluppo moderno di Android

L'esperienza di Monzo dimostra cosa è possibile fare quando si rimane aggiornati con i consigli sugli strumenti di build di Android. Mentre le app legacy spesso hanno difficoltà con l'utilizzo complesso della reflection, Monzo ha trovato la transizione semplice documentando correttamente le regole Keep. "Aggiungiamo sempre un commento che spiega il motivo per cui le regole Keep sono in vigore, in modo da sapere quando è sicuro rimuoverle", osserva Neumayer.

Qual è il consiglio di Neumayer per gli altri team? Controlla regolarmente le tue pratiche rispetto agli standard attuali: "Dai un'occhiata agli ultimi consigli di Google sulle prestazioni delle app e verifica se stai seguendo tutti i consigli più recenti".

Per iniziare e scoprire di più su R8, visita la pagina https://d.android.com/r8

Scritto da:

Continua a leggere