Case study

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

Lettura di 2 minuti
Ben Weiss
Developer Relations Engineer

Monzo è una banca digitale del Regno Unito con 15 milioni di clienti e in continua crescita. Con l'aumento delle dimensioni dell'app, il team di ingegneria ha identificato il tempo di avvio dell'app come un'area critica da migliorare, ma temeva che ciò avrebbe richiesto modifiche significative al codebase.

Attivando completamente le ottimizzazioni R8, Monzo ha ottenuto una riduzione del 35% del tasso di errori ANR (L'applicazione non risponde). Questa semplice modifica ha dimostrato che le ottimizzazioni efficaci non richiedono sempre interventi tecnici complessi.

Ottenere risultati migliori con la modalità completa R8

Monzo ha identificato la modalità completa R8 come una soluzione semplice da provare e ha funzionato, migliorando le prestazioni in generale:

  • Affidabilità dell'avvio:gli avvii a freddo sono migliorati del 30%, gli avvii tiepidi del 24% e gli avvii rapidi del 14%.
  • Velocità di lancio:i tempi di lancio P50 sono migliorati dell'11% e i tempi di lancio 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 sola modifica

Molte app per Android utilizzano un file di configurazione predefinito obsoleto che disattiva la maggior parte delle funzionalità dell'ottimizzatore R8. La principale modifica apportata da Monzo per sbloccare questi miglioramenti delle prestazioni è 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 di Keep. Questi file indicano a R8 quali parti del codice lasciare invariate (di solito perché vengono chiamate dinamicamente o da librerie esterne). Se elimini le regole di Keep non necessarie, R8 può fare di più.

Miglioramento delle prestazioni di scorrimento con i profili di base

Per migliorare ulteriormente l'esperienza utente, Monzo ha implementato i profili di base, prendendo di mira in modo specifico le prestazioni 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 notevole: le prestazioni di scorrimento P90 sono diventate il 71% più veloci e le prestazioni di scorrimento P95 sono migliorate dell'87%. Ora lo scorrimento dell'app è più fluido rispetto a prima.

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

Tenersi al passo con lo sviluppo Android moderno

L'esperienza di Monzo mostra cosa è possibile fare quando si seguono i consigli sugli strumenti di compilazione di Android. Mentre le app legacy spesso hanno difficoltà con l'utilizzo complesso della riflessione, Monzo ha trovato la transizione semplice documentando correttamente le regole di conservazione. "Aggiungiamo sempre un commento che spiega perché sono in vigore le regole di conservazione, così sappiamo quando è sicuro rimuoverle", osserva Neumayer.

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

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

Scritto da:

Continua a leggere