Il supporto dell'ottimizzazione guidata dal profilo è stato introdotto nella versione 22.2.71 di AGDE.
Individuazione delle impostazioni di PGO
Apri le impostazioni del progetto da Esplora soluzioni.
Figura 1: la finestra Esplora soluzioni di Visual Studio.
Assicurati che la piattaforma sia impostata su una configurazione Android (ad esempio Android-arm64-v8a).
Nel riquadro a sinistra, seleziona Proprietà di configurazione > Generale. Cerca il gruppo di proprietà denominato PGO.
Figura 2: la finestra di dialogo Proprietà progetto.
Attiva le build basate su PGO nel progetto
Aggiungi una nuova configurazione denominata Strumentale al tuo progetto. Si basa sulla configurazione che utilizzi durante lo sviluppo per i test, che dovrebbe essere la build ottimizzata tradizionale (puoi comunque attivare funzionalità di debug aggiuntive, purché conservi le impostazioni di ottimizzazione del compilatore).
Fai clic su Configuration Manager... nella finestra di dialogo della pagina della proprietà.
Figura 3: la finestra di dialogo Configuration Manager.
Nella finestra di dialogo di Configuration Manager, seleziona il menu a discesa Configurazione della soluzione attiva e scegli <Nuovo...>.
Figura 4: creazione di una configurazione di nuova build.
... e crea una nuova configurazione basata su PGO.
Figura 5. La finestra di dialogo Nuova configurazione della soluzione.
Per attivare la creazione in modalità Strumentazione PGO in modo da poter generare un profilo per il tuo gioco, seleziona Strumentale dall'elenco di opzioni per l'impostazione Modalità di ottimizzazione guidata dal profilo.
Figura 6: la finestra di dialogo Proprietà progetto, in cui sono evidenziate le impostazioni PGO.
Per l'impostazione Profili di ottimizzazione guidata per il profilo, inserisci il percorso della cartella in cui scrivere il file dei dati non elaborati del profilo di output sul tuo dispositivo Android.
In genere questo valore dovrebbe essere simile a /data/data/<package
name>/cache/
, dove <package name>
è il nome completo del pacchetto dell'APK, ad esempio com.google.sample.tunnel.
Per informazioni più dettagliate sul funzionamento di questa funzionalità, consulta la documentazione di Clang.
Scrittura dei dati del profilo strumentati da PGO sul tuo dispositivo
I dati PGO vengono solitamente scritti sul dispositivo dal sistema di strumentazione PGO alla chiusura di un processo. Su Android le app non si chiudono ma vengono sempre chiuse. Ciò significa che la funzionalità predefinita "Scrivi su disco" non viene mai attivata e richiede all'app di scrivere manualmente i dati PGO.
La tua app deve chiamare esplicitamente __llvm_profile_write_file
per scrivere i dati del profilo. Questo simbolo è disponibile solo quando si crea una build con strumentazione PGO. Per semplificare questa operazione, ti consigliamo di utilizzare il seguente pattern durante la dichiarazione di __llvm_profile_write_file
.
#ifdef PGO_INSTRUMENT
extern "C" int __llvm_profile_write_file(void);
#else
extern "C" int __llvm_profile_write_file(void) { return 0; }
#endif
La chiamata a questa funzione scrive i dati del profilo nella cartella specificata in precedenza.
Esecuzione di un profilo
Per generare il profilo, devi eseguire l'APK creato con strumentazione PGO sul
dispositivo di destinazione. Dopo aver utilizzato il codice in modo soddisfacente e aver attivato la chiamata alla funzione __llvm_profile_write_file
, l'app scriverà i dati del profilo nello spazio di archiviazione.
A questo punto, copia i profili dal dispositivo per consentirne l'utilizzo da parte del compilatore.
Preparazione dei dati del profilo per l'utilizzo da parte del compilatore
Se utilizzato in modo isolato, lo strumento a riga di comando llvm-profdata
fornito come parte di Clang/LLVM nell'NDK di Android viene utilizzato per preparare i file di dati del profilo da usare dal compilatore durante l'ottimizzazione guidata dal profilo di una build.
AGDE esegue automaticamente questo passaggio unendo tutti i file di dati del profilo che hai aggiunto al progetto e utilizzandoli quando l'impostazione Modalità di ottimizzazione guidata dal profilo nelle pagine delle proprietà del progetto è impostata su Ottimizzata.
Creazione del progetto con l'ottimizzazione guidata dal profilo attivata
Ora che hai acquisito i profili e li hai aggiunti al tuo progetto, il compilatore può utilizzare questi dati per perfezionare l'ottimizzazione della tua build.
Crea una nuova configurazione di progetto per la build ottimizzata per PGO in modo da creare in questa modalità solo quando è necessario.
Figura 7: creazione di una nuova configurazione di build ottimizzata per PGO.
Nelle pagine delle proprietà del progetto, imposta l'impostazione Modalità di ottimizzazione guidata sul profilo su Ottimizzata.
Figura 8. Impostazione della modalità di ottimizzazione PGO su Ottimizzata.
Copia i file dal dispositivo e aggiungili al tuo progetto in Solution Explorer. Questi file di dati del profilo vengono selezionati dal compilatore la prossima volta che crei la configurazione ottimizzata per PGO e utilizzati per ottimizzare il modo in cui il compilatore ottimizza il tuo codice.
Puoi copiare i file di dati del profilo nel progetto dal dispositivo utilizzando ADB o Esplora dispositivi Android.
Utilizzo dell'ottimizzazione guidata dal profilo al di fuori di AGDE
Se utilizzi un sistema di compilazione non supportato da AGDE, potresti dover modificare direttamente la build. La documentazione di
Clang
descrive le modifiche necessarie: -fprofile-generate
e
-fprofile-use
.
Se utilizzi un motore middleware per il tuo gioco, consulta la documentazione del motore per sapere come attivare PGO (se supportato).