Come il team di Android Calendar ha migliorato l'avvio e il jank delle app con i profili di riferimento

I profili di riferimento migliorano la velocità di esecuzione del codice fino al 30% evitando dell'interprete e della compilazione JIT passaggi per i percorsi più comuni degli utenti. I profili di riferimento ti consentono di scegliere i percorsi degli utenti che desideri vuoi ottimizzare e contribuire a migliorare l'avvio dell'app, ridurre i blocchi e altro ancora, a sua volta migliora le metriche aziendali, come la fidelizzazione degli utenti e le valutazioni. Scopri di più su Baseline Profili.

Il team di Android Calendar ha implementato i profili di riferimento e ha osservato l'app circa il 20% miglioramento dei tempi di avvio e una riduzione di circa il 50% dei frame lenti o bloccati. Ecco ciò che ha fatto end-to-end per ottenere questi risultati, dal motivo per cui hanno deciso di usare i profili di riferimento per misurare l'impatto.

Profili Cloud e profili di riferimento

Il team di Android Calendar utilizzava già Cloud profili, che sono un altro metodo di ottimizzazione guidata del profilo (PGO) basato sulle query di ricerca interazioni con l'app. Ecco come i profili cloud e i profili di riferimento confronta:

Tipo di profilo Configura Percorsi dell'utente inclusi Funziona al meglio quando la base utenti è Impatto realizzato Versioni di Android supportate

Profili cloud

Attivato per impostazione predefinita

Scelti automaticamente in base a dati utente reali

Grande

Entro un paio di giorni

Android 9 (livello API 28) e versioni successive

Profili di riferimento

Configurato da te

Scelto da te

Tutte le dimensioni

Vista fattura

Android 7 (livello API 24) e versioni successive

Uno dei motivi principali per cui il team di Android Calendar ha deciso di aggiungere i profili di riferimento il loro codebase era dovuto al fatto che stavano passando a un ciclo di rilascio settimanale più rapido. Sebbene i profili Cloud offrano un significativo miglioramento delle prestazioni, sono necessari 1-2 giorni dopo il lancio dell'app affinché possano raggiungere il massimo impatto, aggregando dati utente reali. Integrazione dei profili cloud con Baseline I profili consentono agli utenti di avere più tempo per sperimentare i miglioramenti delle prestazioni di picco prima che venga implementata la versione successiva dell'app.

Inoltre, era importante che il team di Android Calendar fosse in grado di scegliere quali percorsi critici degli utenti (CUJ) includere nello specifico , che puoi eseguire utilizzando i profili di riferimento.

In generale, consigliamo di usare i profili di riferimento oltre ai profili cloud, attivate per impostazione predefinita, per ottimizzare il rendimento.

Percorsi dell'utente inclusi

Il team di Android Calendar ha scelto di includere due CUJ nei propri profili di riferimento:

  • Apertura dell'app nella visualizzazione Programma: inizialmente quella predefinita, quindi è importante ottimizzare per gli utenti che utilizzano l'app per la prima volta o che non apportano modifiche impostazioni predefinite.
  • Apertura dell'app nella visualizzazione Mese: la vista scelta per molti utenti, in base all'utente e i dati di Google Cloud. Per monitorare il modo in cui gli utenti utilizzano la tua app, puoi usare strumenti come Firebase

In genere, dovresti aggiungere i CUJ redditizi per l'attività (se applicabili) e i CUJ più comuni. Per saperne di più su come scegliere i CUJ da ottimizzare. Consulta Che cosa includere.

Implementazione

Il team di Android Calendar utilizza un wrapper interno per Libreria Jetpack Macrobenchmark generare profili di riferimento per facilitare l'integrazione con gli strumenti interni scalabilità generale.

Ecco la configurazione di test di Macrobenchmark per l'apertura dell'app in programma visualizza:

@Test
fun generateProfile() =
    baselineProfileRule.collect(PACKAGE_NAME, includeInStartupProfile = true) {
        startActivityAndWait()
        // Verify pre-existing recurring events and tasks are shown.
        device.waitAndFindObject(By.text("Recurring event"), 20_000)
        device.waitAndFindObject(By.text("Recurring task"), 20_000)

        // Open drawer and verify selected view.
        device.findObject(By.desc("Show Calendar List and Settings drawer")).click()
        device.waitAndFindObject(By.desc("Schedule view, Selected"), 1_000)
    }

Misurare l'impatto utilizzando release controllate

Poiché i profili di riferimento sono strettamente associati all'APK con cui vengono forniti e incorporate prima dell'esecuzione dell'app, non è possibile eseguire esperimento per comprenderne l'impatto. Tuttavia, il team di Android Calendar poter ottenere una misurazione accurata dell'impatto utilizzando le release controllate, che permettono di di rilasciare la nuova versione dell'app solo a un sottoinsieme di utenti e confrontare agli utenti che utilizzano una versione simile alla release precedente.

Con i profili di riferimento, l'azienda ha riscontrato quanto segue, miglioramenti in più aree. Queste statistiche sono aggregate in base a un ampio intervallo dei dispositivi e tra tutti gli utenti: quelli che iniziano nella visualizzazione Pianificazione e Mese è probabile che ottengano i maggiori vantaggi, ma anche altri utenti traggono vantaggio grazie al l'ottimizzazione dei processi condivisi, come il caricamento dei dati del calendario per configurare un database.

  • La latenza mediana di avvio di app interattive (scenario più comune) è diminuita da Da 775 ms a 644 ms (17%)
  • La latenza mediana dell'avvio a freddo è diminuita da 1058 ms a 901 ms (15%)
  • Latenza mediana dell'avvio a caldo diminuita da 453 ms a 378 ms (17%)
  • La frequenza mediana di frame intermedi è diminuita del 42-60% nelle visualizzazioni della pianificazione e del mese

Tieni presente che se utilizzi i profili Cloud insieme a Baseline Per i profili, i miglioramenti diminuiranno leggermente nel corso della la prima settimana, man mano che vengono generati profili Cloud. Tuttavia, devi comunque registrare aumenti di rendimento significativi con i profili di riferimento oltre ad altre le ottimizzazioni applicate.

Per saperne di più sugli strumenti e sulle funzionalità, consulta le seguenti risorse: