Il benchmarking è un modo per ispezionare e monitorare le prestazioni della tua app. Puoi eseguire regolarmente benchmark per analizzare e risolvere i problemi di prestazioni e contribuire a garantire che non vengano introdotte 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ù lunghe degli utenti finali, come la startup, l'interazione con l'interfaccia utente e le animazioni. La libreria fornisce un controllo diretto sull'ambiente di rendimento in cui stai eseguendo il test. Ti consente di controllare la compilazione e di avviare e interrompere l'app per misurare direttamente l'avvio o lo scorrimento dell'app.
La libreria Macrobenchmark inietta 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 ciclo. È progettato per misurare il lavoro della CPU che valuta le prestazioni ottimali, come il codice Just in Time (JIT) e gli accessi al disco memorizzati nella cache, che potresti riscontrare 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 ha un algoritmo specifico con un'elevata intensità di calcolo che viene chiamato più volte durante l'esecuzione dell'app, questi potrebbero essere casi ideali per il benchmarking. Puoi anche misurare parti dell'UI. Ad esempio, puoi misurare il costo dell'associazione di elementi RecyclerView
, il tempo necessario per gonfiare un layout o l'intensità del passaggio di misurazione e layout della classe View
dal punto di vista delle prestazioni.
Tuttavia, non puoi misurare il contributo dei casi di benchmark all'esperienza utente complessiva. In alcuni scenari, il benchmarking non ti dice se stai migliorando un collo di bottiglia come il jitter 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 da esaminare e ottimizzare, il loop sottoposto a 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 riporta solo informazioni sulla tua app, non sul sistema nel suo complesso. Pertanto, è più adatto per analizzare il rendimento di situazioni specifiche dell'app, non di quelle che potrebbero essere correlate a problemi generali del sistema.
Confronto della raccolta di benchmark
Macrobenchmark | Microbenchmark | |
---|---|---|
Versione API | 23 e versioni successive | 14 e versioni successive |
Funzione | Misurare punti di accesso o 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 corso del lavoro della CPU. |
Velocità | Velocità di iterazione media. Puoi superare un minuto. | Velocità di iterazione elevata. Spesso meno di 10 secondi. |
Monitoraggio | I risultati sono accompagnati da tracce di profilazione. | Campionamento e monitoraggio facoltativi dei metodi. |
Consigliati per te
- Nota: il testo del link viene visualizzato quando JavaScript è disattivato
- Creare profili di baseline {:#creating-profile-rules}
- Libreria JankStats
- Panoramica della misurazione del rendimento delle app