I benchmark principali sono un insieme di benchmark che coprono i percorsi utente di alto livello delle app, come l'avvio dell'app o lo scorrimento nell'app Pokedex open source.
- Benchmark di avvio: monitoraggio del tempo che intercorre tra l'apertura dell'app e la visualizzazione dei contenuti.
- Benchmark di scorrimento dell'eroe: misurazione delle prestazioni di scorrimento di una griglia pigra con immagini.
Configurazione del test
- Selezione dell'app:abbiamo condotto questi test utilizzando l'app Pokedex open source, confrontando le versioni basate su View e basate su Compose. L'app è stata selezionata per rappresentare scenari reali e non è stata sviluppata dal team di Compose.
- Configurazione hardware:abbiamo eseguito benchmark su Pixel 3a con Android 12 (API 31) con CPU e GPU bloccate. Questo dispositivo viene utilizzato come base di riferimento standard per i benchmark hero.
- Configurazione della build:i benchmark utilizzano l'app creata in modalità di rilascio con R8 abilitato. L'app è completamente precompilata per ridurre l'instabilità dovuta alla compilazione just-in-time (JIT).
- Selezione dei risultati: per garantire l'analisi dello scenario peggiore, i valori anomali estremi e il rumore non rappresentativo sono stati esclusi dai risultati del benchmark. È stata quindi stabilita una baseline selezionando i valori mediani dei dati sul rendimento del limite superiore
Benchmark degli eroi delle startup
Per misurare l'avvio, abbiamo utilizzato PokedexStartupBenchmark. PokedexStartupBenchmark misura il tempo necessario affinché l'app Pokedex sia visibile all'utente.
L'avvio dell'app può avvenire in uno dei tre stati: avvio a freddo, avvio a caldo o avvio rapido. Ogni stato influisce sul tempo necessario affinché un'app diventi visibile all'utente. In un avvio a freddo, l'app viene avviata da zero. In questo benchmark, misuriamo le prestazioni di avvio dell'app nello stato di avvio a freddo. Ti consigliamo di ottimizzare sempre l'app in base all'ipotesi di un avvio a freddo. In questo modo, è possibile migliorare anche le prestazioni degli avvii a caldo e completi.
Le metriche che utilizziamo per misurare il tempo di avvio dell'app sono il tempo di attesa per la prima schermata e il tempo di attesa per la visualizzazione completa.
Tempo di attesa per la prima schermata
Il tempo alla visualizzazione iniziale (TTID) misura il tempo necessario a un'app per produrre il suo primo frame, inclusa l'inizializzazione del processo durante un avvio a freddo, la creazione dell'attività durante un avvio a freddo o tiepido e la visualizzazione del primo frame.
In PokedexStartupBenchmark, Compose 1.11 è il 2,5% più lento di Views per
TTID con un avvio a freddo.
Tempo di attesa per la visualizzazione completa
Tempo di attesa per la visualizzazione completa (TTFD) misura il tempo necessario affinché l'app diventi interattiva. Ciò significa che tutti i dati sono stati caricati e disegnati. Per saperne di più sul tempo necessario per la visualizzazione completa, consulta Tempo di avvio dell'app.
In PokedexStartupBenchmark, Compose 1.11 è il 13% più lento di Views per
TTFD con un avvio a freddo.
Scorrere i benchmark degli eroi
Per misurare le prestazioni di scorrimento, abbiamo utilizzato PokedexScrollBenchmark. Misura le prestazioni di scorrimento della schermata dell'app Pokedex per una griglia pigra con immagini. In questo benchmark, l'intera schermata viene scorre e spostata più volte e vengono caricati nuovi elementi. Il rendimento dello scorrimento viene misurato in base al tasso di jank.
Tasso di jank
I dispositivi Android vengono visualizzati fino a 60 o 120 frame al secondo (fps). Ciò significa che il sistema ha una scadenza rigorosa (ad esempio, 16,6 ms per 60 fps) per produrre un frame. Se l'app impiega troppo tempo per svolgere il suo lavoro, può causare un balbuzie visibile che chiamiamo jank.
In PokedexScrollBenchmark, Compose e Views ottengono lo stesso rendimento
di
0,21% di jank a partire da Compose 1.9.0. In termini assoluti, 1 frame su 485 era
instabile.
Questi benchmark mostrano che Compose 1.9 e versioni successive corrispondono al rendimento di Views per jank durante lo scorrimento.
Eseguire benchmark degli eroi
Per convalidare i risultati del rendimento ed eseguire i benchmark localmente:
- Segui la guida di AndroidX per esaminare il codice sorgente.
- Segui le istruzioni nel codice sorgente dei benchmark degli eroi.
Puoi eseguire questi benchmark su qualsiasi dispositivo supportato, ad esempio un dispositivo specifico per cui stai ottimizzando la tua app. Tuttavia, per convalidare i risultati ufficiali, utilizza la stessa configurazione hardware.