Il benchmarking è un modo per esaminare e monitorare il rendimento della tua app. Puoi eseguire regolarmente benchmark per analizzare ed eseguire il debug dei problemi di rendimento e contribuire a garantire di non introdurre regressioni nelle modifiche recenti.
Android offre due librerie e approcci di benchmarking per analizzare e testare diversi tipi di situazioni nella tua app: Macrobenchmark e Microbenchmark.
Macrobenchmark
La libreria Macrobenchmark misura le interazioni più grandi degli utenti finali, come l'avvio, l'interazione con l'UI e le animazioni. La libreria fornisce il controllo diretto sull'ambiente di rendimento che stai testando. Ti consente di controllare la compilazione e di avviare e arrestare l'app per misurare direttamente l'avvio o lo scorrimento effettivo dell'app.
La libreria Macrobenchmark inserisce eventi e monitora i risultati esternamente da un'app di test creata con i tuoi test. Pertanto, quando scrivi i benchmark, non chiami direttamente il codice dell'app, ma navighi all'interno dell'app come utente.
Microbenchmark
La libreria Microbenchmark ti consente di eseguire il benchmark del codice dell'app direttamente in un loop. È progettata per misurare il lavoro della CPU che valuta il rendimento nel caso migliore, ad esempio gli accessi al disco e JIT (Just in Time) riscaldati memorizzati nella cache, che potresti vedere con un loop interno o una funzione hot specifica. La libreria può misurare solo il codice che puoi chiamare direttamente in isolamento.
Se la tua app deve elaborare una struttura di dati complessa o avere un algoritmo specifico che richiede un elevato carico di calcolo chiamato più volte durante l'esecuzione dell'app, questi potrebbero essere casi adatti per il benchmarking. Puoi anche misurare parti della tua UI. Ad esempio, puoi misurare il costo del binding degli elementi RecyclerView,
il tempo necessario per gonfiare un layout o quanto è impegnativo il passaggio di layout e misurazione
della classe View dal punto di vista del rendimento.
Tuttavia, non puoi misurare il contributo dei casi di benchmarking all'esperienza utente complessiva. In alcuni scenari, il benchmarking non ti dice se stai migliorando un collo di bottiglia come il jank o il tempo di avvio dell'app. Per questo motivo, è fondamentale identificare prima questi colli di bottiglia con Android Profiler. Dopo aver trovato il codice che vuoi esaminare e ottimizzare, il loop di benchmarking può essere eseguito ripetutamente in modo rapido e semplice per creare risultati meno rumorosi, il che ti consente di concentrarti su un'area di miglioramento.
La libreria Microbenchmark segnala solo informazioni sulla tua app, non sul sistema nel suo complesso. Pertanto, è ideale per analizzare il rendimento di situazioni specifiche dell'app, non di quelle che potrebbero riguardare problemi di sistema generali.
Confronto tra le librerie di benchmarking
| Macrobenchmark | Microbenchmark | |
|---|---|---|
| Versione API | 23 e versioni successive | 14 e versioni successive |
| Funzione | Misura i punti di ingresso o le interazioni di alto livello, come l'avvio dell'attività o lo scorrimento di un elenco. | Misura le singole funzioni. |
| Ambito | Test out-of-process dell'app completa. | Test in-process del lavoro della CPU. |
| Velocità | Velocità di iterazione media. Può superare un minuto. | Velocità di iterazione elevata. Spesso meno di 10 secondi. |
| Tracciamento | I risultati includono tracce di profilazione. | Campionamento e tracciamento dei metodi facoltativi. |
Consigliati per te
- Nota: il testo del link viene visualizzato quando JavaScript è disattivato
- Creare profili di base {:#creating-profile-rules}
- Libreria JankStats
- Panoramica della misurazione delle prestazioni dell'app