L'ottimizzazione dell'utilizzo della CPU da parte della tua app presenta molti vantaggi, tra cui offrire un'esperienza utente più rapida e fluida e preservare la durata della batteria del dispositivo.
Puoi utilizzare Profiler per controllare l'utilizzo della CPU da parte dell'app e le attività dei thread in tempo reale durante l'interazione con l'app, oppure per esaminare i dettagli nelle tracce del metodo registrato, nelle tracce della funzione e nel sistema.
Le informazioni dettagliate registrate e mostrate da Profiler della CPU sono determinate dalla configurazione di registrazione scelta:
- System Trace: acquisisce dettagli granulari che ti consentono di controllare in che modo la tua app interagisce con le risorse di sistema.
Tracce del metodo e della funzione:per ogni thread nel processo dell'app, puoi scoprire quali metodi (Java) o funzioni (C/C++) vengono eseguiti in un periodo di tempo e le risorse della CPU utilizzate da ciascun metodo o funzione durante l'esecuzione. Puoi anche utilizzare le tracce di metodo e funzioni per identificare chiamanti e chiamati. Un chiamante è un metodo o una funzione che richiama un altro metodo o una funzione, mentre un chiamante è richiamato da un altro metodo o funzione. Puoi utilizzare queste informazioni per determinare quali metodi o funzioni sono responsabili troppo spesso per richiamare attività che richiedono molte risorse e per ottimizzare il codice della tua app per evitare lavoro non necessario.
Quando registri le tracce del metodo, puoi scegliere la registrazione campionata o strumentata. Quando registri tracce di funzioni, puoi utilizzare solo la registrazione campionata.
Per informazioni dettagliate sull'utilizzo e sulla scelta di ciascuna di queste opzioni di traccia, consulta la pagina Scegliere una configurazione di registrazione.
Panoramica di Profiler della CPU
Per aprire Profiler della CPU, procedi nel seguente modo:
Seleziona Visualizza > Windows Tool > Profiler o fai clic su Profilo
nella barra degli strumenti.
Se richiesto dalla finestra di dialogo Seleziona target di deployment, scegli il dispositivo a cui eseguire il deployment dell'app per la profilazione. Se hai collegato un dispositivo tramite USB, ma non lo vedi elencato, assicurati di aver attivato il debug USB.
Fai clic in qualsiasi punto della sequenza temporale della CPU per aprire Profiler CPU.
Quando apri il Profiler della CPU, l'attività della CPU e il thread vengono visualizzati immediatamente. Dovresti vedere qualcosa di simile alla Figura 1.
Figura 1. Tempistiche in CPU Profiler.
Come indicato nella Figura 1, la visualizzazione predefinita per il Profiler della CPU include le seguenti tempistiche:
- Sequenza temporale degli eventi:mostra le attività nell'app durante la transizione da stati a ciclo di vita diversi e indica le interazioni degli utenti con il dispositivo, inclusi gli eventi di rotazione dello schermo. Per informazioni sull'abilitazione della sequenza temporale degli eventi sui dispositivi con Android 7.1 (livello API 25) e versioni precedenti, consulta la sezione Abilitare la profilazione avanzata.
- Sequenza temporale della CPU: mostra l'utilizzo della CPU in tempo reale della tua app, come percentuale del tempo totale di CPU disponibile, e il numero totale di thread utilizzati dall'app. La sequenza temporale mostra anche l'utilizzo della CPU da parte di altri processi (come quelli di sistema o altre app), così puoi confrontarla con l'utilizzo della tua app. Per esaminare i dati storici sull'utilizzo della CPU, sposta il mouse sull'asse orizzontale della sequenza temporale.
-
Sequenza temporale dell'attività del thread:elenca ciascun thread che appartiene al processo della tua app e ne indica l'attività lungo una sequenza temporale utilizzando i colori elencati di seguito. Dopo aver registrato una traccia, puoi selezionare un thread da questa sequenza temporale per
ispezionarne i dati nel riquadro delle tracce.
- Verde: il thread è attivo o pronto per utilizzare la CPU. Questo significa che è in esecuzione o eseguibile.
- Giallo:il thread è attivo, ma è in attesa di un'operazione I/O (ad esempio, I/O del disco o di rete) prima di poter completare il suo lavoro.
- Grigio: il thread è in attesa e non consuma tempo di CPU. A volte questo si verifica quando il thread richiede l'accesso a una risorsa non ancora disponibile. O il thread entra in sospensione volontaria oppure il kernel mette il thread in modalità di sospensione finché la risorsa richiesta non diventa disponibile.
Profiler della CPU segnala anche l'utilizzo della CPU dei thread che Android Studio e la piattaforma Android aggiungono al processo dell'app, ad esempio
JDWP
,Profile Saver
,Studio:VMStats
,Studio:Perfa
eStudio:Heartbeat
(anche se i nomi esatti visualizzati nella sequenza temporale dell'attività dei thread possono variare). Android Studio registra questi dati per poter identificare il momento in cui l'attività dei thread e l'utilizzo della CPU sono effettivamente causati dal codice dell'app.