Profilazione del rendimento

La profilazione e l'ottimizzazione delle prestazioni sono un'attività complessa che può sembrare più un'arte che una scienza. Le numerose parti mobili che devono essere perfettamente sincronizzate in un gioco, combinate con la complessità di una determinata scena, possono rendere difficile la comprensione e l'isolamento dei problemi. Su ChromeOS, molti strumenti sono progettati tenendo conto dei chipset ARM. Di seguito sono riportati alcuni suggerimenti per velocizzare la procedura.

Un aspetto da tenere presente quando ottimizzi in modo specifico le prestazioni del tuo gioco su ChromeOS è che i problemi di prestazioni sottostanti sono condivisi su tutti i dispositivi e i miglioramenti avvantaggeranno le prestazioni e la durata della batteria per tutti gli utenti. ChromeOS, con una tendenza a display più grandi e dispositivi di input per computer, potrebbe far emergere più facilmente determinati problemi. Ad esempio, un algoritmo di caricamento delle texture inefficiente potrebbe "funzionare bene" sui dispositivi mobili di fascia alta, ma non essere in grado di tenere il passo su un Chromebook con un display 4K. Il miglioramento dell'algoritmo migliorerà il gioco su tutti i dispositivi.

Se non hai mai creato profili, un buon approccio generale è:

  1. Determina se il rendimento è limitato da:
    • CPU
    • GPU
    • Altro: input/disco/rete
  2. Prova a isolare la causa principale
  3. Prova a ottimizzare
  4. Ripeti

Nella maggior parte dei casi, i giochi si mostreranno "CPU-bound" o "GPU-bound". Utilizzando i suggerimenti e gli strumenti di profilazione riportati di seguito, prova a determinare dove il sistema "impiega il suo tempo" ogni frame. Ad esempio, se il calcolo e il caricamento dei vertici richiedono molto tempo prima che la GPU inizi il rendering, il gioco potrebbe essere CPU-bound. Se invece utilizzi un numero elevato di filtri dettagliati basati sulla GPU, è probabile che il gioco sia limitato dalla GPU. Tieni presente che molti cellulari e dispositivi ChromeOS non hanno schede grafiche discrete. Un gioco per computer che presuppone che i filtri della GPU siano veloci potrebbe scoprire che le GPU integrate impiegano troppo tempo per eseguire il rendering di ogni scena.

Per ulteriori dettagli su come affrontare la profilazione, consulta la guida di ARM su "La procedura di ottimizzazione".

Strumenti

Sebbene sia certamente possibile determinare i colli di bottiglia da soli, disporre degli strumenti giusti renderà più semplice l'analisi delle prestazioni del gioco e ti darà la certezza di concentrarti sulle cose giuste. Esistono molti strumenti, ma ecco alcuni dei nostri programmi preferiti.

Profiler di Android Studio

Il modo più semplice per iniziare a profilare qualsiasi app per Android è utilizzare il profiler di Android Studio integrato. In Android Studio, anziché fare clic su "Esegui", scegli "Profilo" per eseguire l'app e ottenere informazioni in tempo reale sull'utilizzo di CPU, memoria e rete. Le tracce della CPU semplici possono essere un modo rapido per isolare le aree di codice da esaminare.

Questo strumento non fornisce informazioni reali sull'utilizzo della GPU né su ciò che accade tra una sincronizzazione dei frame e l'altra, quindi, anche se è un buon strumento da avere a disposizione, probabilmente non sarà sufficiente per far funzionare il gioco al massimo delle prestazioni.

Snapdragon Profiler

Poiché il comportamento dei tuoi giochi sarà lo stesso su tutti i dispositivi, un buon modo per ottenere informazioni dettagliate sulle prestazioni è utilizzare Snapdragon Profiler su uno smartphone ARM basato su Qualcomm. Sebbene non esegua direttamente la profilazione su un dispositivo ChromeOS, questo strumento dovrebbe fornire informazioni su dove il gioco trascorre la maggior parte del tempo per ogni frame e può fornire informazioni dettagliate su quali chiamate GPU vengono utilizzate.

Ad esempio, se noti che viene impiegato molto tempo nei filtri GPU anisotropici e che questi dominano il lavoro svolto in ogni frame, puoi probabilmente ottenere un notevole miglioramento delle prestazioni modificando questa impostazione.

Se noti che i tempi della GPU sono brevi e regolari, ma i tempi della CPU sono dominanti e ti fanno perdere le sincronizzazioni dei frame, dai un'occhiata agli algoritmi di caricamento delle texture/preparazione dei frame.

Per ulteriori informazioni, consulta la documentazione ufficiale sull'utilizzo.

ARM Mobile Studio

Un altro profiler di dispositivi ARM utile è ARM Mobile Studio. Alcuni sviluppatori potrebbero preferirlo a Snapdragon Profiler, ma può essere utilizzato in modo simile. Consulta la documentazione sull'utilizzo ufficiale.

Android GPU Inspector

Android GPU Inspector è un nuovo strumento sviluppato da Google e progettato specificamente per aiutarti a ottenere le migliori prestazioni dal tuo gioco con OpenGL e Vulkan. Al momento è in stato di anteprima per gli sviluppatori e potrebbe richiedere un po' di lavoro per la configurazione. Inoltre, funziona solo su una manciata di dispositivi. Promette di essere uno dei principali strumenti da utilizzare in futuro per la profilazione grafica. Consulta la documentazione ufficiale.

Tracciamento della panoramica di ARC

Esiste anche uno strumento più generalizzato, il tracciamento della panoramica ARC, che funziona in modo simile allo strumento di tracciamento della grafica ARC sopra descritto. Questo tracer fornirà metriche di alto livello sulle prestazioni di un'app e di ChromeOS. Le letture mostreranno gli FPS dell'app e di Chrome stesso, nonché l'utilizzo della CPU, della GPU, il consumo energetico e altro ancora. Puoi eseguire lo strumento più volte e visualizzare i grafici di ogni esecuzione sovrapposti con colori diversi per distinguerli. Ogni modello di tracciamento verrà salvato nella cartella Download e potrà essere reimportato per confronti futuri. Per i controlli di integrità generali delle app, il tracciamento della panoramica ARC è un buon punto di partenza.

Visita chrome://arc-overview-tracing nel browser su ChromeOS per accedere a questo strumento.

Passaggi successivi

Quindi, magari hai trovato alcuni colli di bottiglia, ma non sai cosa fare. Oppure li hai trovati e risolti, ma non sai quali siano i prossimi passi. Di seguito abbiamo compilato un elenco di suggerimenti e risorse generali e specifici per Android e i motori di ricerca.

Suggerimenti generali

Il portale Android for Developers offre ottimi suggerimenti per migliorare le prestazioni della tua applicazione. Lì puoi trovare considerazioni sul tempo di caricamento, come utilizzare il multithreading, la gestione del ritardo di input e altro ancora.

Ricorda di eseguire la profilazione spesso e in anticipo, soprattutto se prendi di mira macchine meno potenti o se stai spingendo i limiti dell'architettura di fascia alta. Monitorare le statistiche sul rendimento dell'app ti aiuterà a identificare le modifiche che hanno ridotto la frequenza dei frame e quelle che ti aiutano a mantenere l'esperienza fluida che stai cercando.

Motore Unity

Oltre alla documentazione Android generale, Unity fornisce una documentazione specifica per ChromeOS per aiutarti a creare un'applicazione ChromeOS performante utilizzando il suo motore. Consulta la documentazione di ChromeOS su come iniziare, input, debug e creazione, che include come creare build x86. Per i contenuti sulle prestazioni, consulta Informazioni sull'ottimizzazione e il corso su Rendimento e ottimizzazione.

Ti consigliamo di leggere la guida di ARM sulla profilazione e l'ottimizzazione dei giochi Unity e le relative best practice. Ti guiderà nella procedura di profilazione di un gioco di esempio in Unity con lo strumento Streamline, una funzionalità di ARM Mobile Studio.

Unreal Engine

Unreal ha scritto le proprie linee guida sul rendimento e i propri suggerimenti e trucchi che ti insegnano a sfruttare al meglio molte delle opzioni e delle impostazioni fornite dal motore. Qui troverai suggerimenti come i trucchi per il livello di dettaglio, come ottenere il massimo dall'illuminazione, guide passo passo sulle impostazioni di qualità dei materiali e sugli shader, oltre ad altri suggerimenti.

Per ulteriori ottimizzazioni basate sulla grafica, ARM ha scritto una guida per ottimizzare i giochi per dispositivi mobili. Puoi trovare suggerimenti generali per l'ottimizzazione e considerazioni specifiche per Unreal relative alla grafica qui.