Ispeziona l'attività della CPU con Profiler CPU

L'ottimizzazione dell'utilizzo della CPU da parte della tua app presenta molti vantaggi, come l'offerta di un'esperienza utente più veloce e fluida e la preservazione della durata della batteria del dispositivo.

Puoi utilizzare CPU Profiler per controllare in tempo reale l'utilizzo della CPU e l'attività dei thread della tua app oppure puoi esaminare i dettagli nelle tracce dei metodi registrati, delle tracce di funzioni e del sistema.

Le informazioni dettagliate registrate e mostrate dal Profiler CPU dipendono dalla configurazione di registrazione che scegli:

  • Traccia del sistema: acquisisce dettagli granulari che ti consentono di esaminare il modo in cui la tua app interagisce con le risorse di sistema.
  • Tracce di metodi e funzioni: per ogni thread nel processo dell'app, puoi scoprire quali metodi (Java) o funzioni (C/C++) vengono eseguiti in un determinato periodo di tempo e le risorse della CPU utilizzate da ogni metodo o funzione durante l'esecuzione. Puoi inoltre utilizzare le tracce del metodo e della funzione per identificare i caller e i caller. Un chiamante è un metodo o una funzione che richiama un altro metodo o funzione, mentre una chiamata viene richiamata da un altro metodo o funzione. Puoi utilizzare queste informazioni per determinare quali metodi o funzioni sono responsabili di richiamare troppo spesso determinate attività che utilizzano molte risorse e ottimizzare il codice della tua app per evitare lavori superflui.

    Quando registri le tracce del metodo, puoi scegliere la registrazione campionata o strumentata. Quando registri le tracce delle funzioni, puoi utilizzare solo la registrazione campionata.

Per informazioni dettagliate sull'utilizzo e la scelta di ciascuna di queste opzioni della traccia, vedi Scegliere una configurazione di registrazione.

Panoramica del Profiler CPU

Per aprire il Profiler CPU, procedi nel seguente modo:

  1. Seleziona Visualizza > Finestre degli strumenti > Profiler oppure fai clic su Profilo nella barra degli strumenti.

    Se richiesto dalla finestra di dialogo Seleziona destinazione del deployment, scegli il dispositivo su cui eseguire il deployment dell'app per la profilazione. Se hai collegato un dispositivo tramite USB, ma non lo trovi nell'elenco, assicurati di aver attivato il debug USB.

  2. Fai clic in un punto qualsiasi della sequenza temporale CPU per aprire il Profiler CPU.

Quando lo apri, Profiler CPU mostra immediatamente l'utilizzo della CPU e l'attività dei thread della tua app. Dovresti vedere qualcosa di simile a quello della Figura 1.

Figura 1. Sequenze temporali nel Profiler CPU.

Come indicato nella Figura 1, la visualizzazione predefinita per il Profiler CPU include le seguenti tempistiche:

  1. Sequenza temporale degli eventi:mostra le attività nella tua app mentre passano attraverso diversi stati durante il ciclo di vita e indica le interazioni degli utenti con il dispositivo, inclusi gli eventi di rotazione dello schermo. Per informazioni sull'attivazione della sequenza temporale degli eventi sui dispositivi con Android 7.1 (livello API 25) e versioni precedenti, consulta Abilitare la profilazione avanzata.
  2. Sequenza temporale CPU:mostra l'utilizzo in tempo reale della CPU dell'app (come percentuale del tempo di CPU totale disponibile) e il numero totale di thread utilizzati dalla tua app. La cronologia mostra anche l'utilizzo della CPU da parte di altri processi (come processi di sistema o altre app), in modo che tu possa confrontarlo con l'utilizzo dell'app. Puoi esaminare i dati storici sull'utilizzo della CPU spostando il mouse lungo l'asse orizzontale della sequenza temporale.
  3. Sequenza temporale dell'attività dei thread:elenca ogni thread che appartiene al processo dell'app e indica la relativa 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. Ciò significa che è in esecuzione o eseguibile.
    • Giallo: il thread è attivo, ma è in attesa di un'operazione di I/O (ad esempio, un disco o l'I/O di rete) prima di poter completare il lavoro.
    • Grigio:il thread è inattivo e non consuma tempo di CPU. A volte questo accade quando il thread richiede l'accesso a una risorsa non ancora disponibile. Il thread entra in modalità di sospensione volontaria o il kernel lo mette in sospensione fino a quando la risorsa richiesta non diventa disponibile.

    Il Profiler CPU segnala anche l'utilizzo della CPU per i thread che Android Studio e la piattaforma Android aggiungono al processo dell'app, ad esempio JDWP, Profile Saver, Studio:VMStats, Studio:Perfa e Studio:Heartbeat (anche se i nomi esatti visualizzati nella sequenza temporale dell'attività dei thread possono variare). Android Studio segnala questi dati per consentirti di identificare quando l'attività dei thread e l'utilizzo della CPU sono effettivamente causati dal codice della tua app.