Il benchmarking è un modo per ispezionare e monitorare le prestazioni della tua app. Puoi eseguire regolarmente dei benchmark per analizzare ed eseguire il debug di problemi di prestazioni e assicurarti di non introdurre regressioni nelle modifiche recenti.
Android offre due librerie di benchmarking e approcci per analizzare e testare diversi tipi di situazioni nella tua app: Macrobenchmark e Microbenchmark.
Macrobenchmark
La libreria Macrobenchmark misura le interazioni più ampie dell'utente finale, come l'avvio, l'interazione con l'interfaccia utente e le animazioni. La libreria fornisce un controllo diretto sull'ambiente delle prestazioni che stai testando. Ti consente di controllare la compilazione e di avviare e interrompere l'app per misurare direttamente l'avvio o lo scorrimento effettivi dell'app.
La libreria Macrobenchmark inserisce eventi e monitora i risultati esternamente da un'app di test creata con i tuoi test. Di conseguenza, quando scrivi i benchmark, non chiami direttamente il codice dell'app, ma ti sposti all'interno dell'app come utente.
Microbenchmark
La libreria Microbenchmark consente di confrontare il codice dell'app direttamente in loop. Questo tipo di misurazione è progettato per misurare il lavoro della CPU in grado di valutare le prestazioni ottimali, ad esempio il riscaldamento just-in-time (JIT) e gli accessi al disco memorizzati nella cache, che potresti notare con un loop interno o una funzione calda specifica. La libreria può misurare solo il codice che si chiama direttamente.
Se la tua app deve elaborare una struttura di dati complessa o avere un algoritmo specifico, basato sul calcolo che viene chiamato più volte durante l'esecuzione dell'app, questi potrebbero essere buoni casi per il benchmarking. Puoi anche misurare parti
della UI. Ad esempio, puoi misurare il costo dell'associazione di elementi RecyclerView
,
il tempo necessario per gonfiare un layout o quanto è impegnativo il superamento
di layout e misurazioni della tua classe View
dal punto di vista del rendimento.
Tuttavia, non è possibile misurare in che modo i casi di benchmark contribuiscono all'esperienza utente complessiva. In alcuni casi, il benchmarking non indica se stai migliorando un collo di bottiglia, ad esempio jank o tempo di avvio dell'app. Per questo motivo, è fondamentale identificare questi colli di bottiglia prima di tutto con Android Profiler. Dopo aver trovato il codice che vuoi analizzare e ottimizzare, il loop di riferimento può essere eseguito ripetutamente in modo rapido e semplice per generare risultati meno fastidiosi, permettendoti di concentrarti su un'area di miglioramento.
La libreria Microbenchmark riporta solo informazioni sulla tua app, non sul sistema in generale. Pertanto, è preferibile analizzare le prestazioni di situazioni specifiche dell'app, non di quelle che potrebbero essere correlate a problemi generali del sistema.
Confronto tra libreria di benchmark
Macrobenchmark | Microbenchmark | |
---|---|---|
Versione API | 23 e versioni successive | 14 e versioni successive |
Funzione | Misurare i punti di ingresso o le interazioni di alto livello, come l'avvio di un'attività o lo scorrimento di un elenco. | Misurare 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. |
Monitoraggio | I risultati includono tracce di profilazione. | Campionamento e tracciamento facoltativi dei metodi. |
Consigliato per te
- Nota: il testo del link viene visualizzato quando JavaScript è disattivato
- Crea profili di riferimento {:#Creating-profile-rules}
- Raccolta JankStats
- Panoramica sulla misurazione del rendimento delle app