Condividi tramite


/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 e c non cambiano tra le tre espressioni, il compilatore può assegnare il calcolo di b + c a una variabile temporanea e usare tale variabile per b + 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, noaliaso restrict.

    Nota

    È possibile abilitare o disabilitare l'ottimizzazione globale in base alla funzione usando il optimize pragma insieme all'opzione g .

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

  1. Aprire la finestra di dialogo Pagine delle proprietà del progetto. Per informazioni dettagliate, vedere Impostare il compilatore e le proprietà di compilazione.

  2. Selezionare la pagina delle proprietà Proprietà di configurazione>C/C++>Riga di comando.

  3. Immettere l'opzione del compilatore nella casella Opzioni aggiuntive.

Per impostare l'opzione del compilatore a livello di codice

Vedi anche

Sintassi della riga di comando del compilatore MSVC