/Og
(Ottimizzazioni globali)
Deprecato. Fornisce ottimizzazioni locali e globali, allocazione automatica dei registri e ottimizzazione del ciclo. È consigliabile usare /O1
(Riduci a icona) o /O2
(Ingrandisci velocità).
Sintassi
/Og
Osservazioni:
/Og
è stato deprecato. Queste ottimizzazioni sono ora abilitate per impostazione predefinita quando sono abilitate eventuali ottimizzazioni. Per altre informazioni sulle ottimizzazioni, vedere /O1
, /O2
(Ridurre al minimo le dimensioni, ottimizzare la velocità) o /Ox
(Abilitare la maggior parte delle ottimizzazioni della velocità).
Le ottimizzazioni seguenti sono disponibili in /Og
:
Eliminazione di sottoespressione comune locale e globale
In questa ottimizzazione, il valore di una sottoespressione comune viene calcolato una sola volta. Nell'esempio seguente, se i valori di
b
ec
non cambiano tra le tre espressioni, il compilatore può assegnare il calcolo dib + c
a una variabile temporanea e usare tale variabile perb + c
:a = b + c; d = b + c; e = b + c;
Per l'ottimizzazione della sottoespressione comune locale, il compilatore esamina le brevi sezioni di codice per le sottoespressioni comuni. Per l'ottimizzazione della sottoespressione comune globale, il compilatore cerca intere funzioni per sottoespressioni comuni.
Allocazione automatica dei registri
Questa ottimizzazione consente al compilatore di archiviare le variabili e le sottoespressioni usate di frequente nei registri. La
register
parola chiave viene ignorata per impostazione predefinita e causa una diagnostica in/std:c++17
o versione successiva.Ottimizzazione del ciclo
Questa ottimizzazione rimuove le sottoespressioni invarianti dal corpo di un ciclo. Un ciclo ottimale contiene solo espressioni i cui valori cambiano attraverso ogni esecuzione del ciclo. Nell'esempio seguente l'espressione
x + y
non cambia nel corpo del ciclo:i = -100; while( i < 0 ) { i += x + y; }
Dopo l'ottimizzazione,
x + y
viene calcolato una sola volta anziché ogni volta che viene eseguito il ciclo:i = -100; t = x + y; while( i < 0 ) { i += t; }
L'ottimizzazione del ciclo è molto più efficace quando il compilatore non può presupporre alcun alias, impostato con
__restrict
,noalias
orestrict
.Nota
È possibile abilitare o disabilitare l'ottimizzazione globale in base alla funzione usando il
optimize
pragma insieme all'opzioneg
.
Per informazioni correlate, vedere /Oi
(Generare funzioni intrinseche) e /Ox
(Abilitare la maggior parte delle ottimizzazioni della velocità).
Per impostare l'opzione del compilatore nell'ambiente di sviluppo di Visual Studio
Aprire la finestra di dialogo Pagine delle proprietà del progetto. Per informazioni dettagliate, vedere Impostare il compilatore e le proprietà di compilazione.
Selezionare la pagina delle proprietà Proprietà di configurazione>C/C++>Riga di comando.
Immettere l'opzione del compilatore nella casella Opzioni aggiuntive.
Per impostare l'opzione del compilatore a livello di codice
- Vedere AdditionalOptions.