Condividi tramite


/Og (Ottimizzazioni globali)

Aggiornamento: novembre 2007

Fornisce ottimizzazioni locali e globali, allocazione del registro automatica e ottimizzazione dei cicli. Obsoleta.

/Og

Note

Sono disponibili le ottimizzazioni riportate di seguito:

  • Eliminazione di sottoespressioni comuni locali e globali

    In questa ottimizzazione il valore di una sottoespressione comune viene calcolato una volta. Nell'esempio che segue, 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 sostituire la variabile per b + c:

    a = b + c;
    d = b + c;
    e = b + c;
    

    Per l'ottimizzazione delle sottoespressioni comuni locali, il compilatore esamina brevi sezioni di codice alla ricerca di sottoespressioni comuni. Per l'ottimizzazione delle sottoespressioni comuni globali, il compilatore ricerca nelle intere funzioni delle sottoespressioni comuni.

  • Allocazione del registro automatica

    Questa ottimizzazione consente al compilatore di archiviare variabili e sottoespressioni utilizzate con frequenza nei registri. La parola chiave register viene ignorata.

  • Ottimizzazione dei cicli

    Questa ottimizzazione rimuove le sottoespressioni invariant dal corpo di un ciclo. Un ciclo ottimale contiene solo espressioni i cui valori cambiano in ogni esecuzione del ciclo. Nell'esempio che segue 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 volta e non a ogni esecuzione del ciclo:

    i = -100;
    t = x + y;
    while( i < 0 ) {
        i += t;
    }
    

    L'ottimizzazione dei cicli è molto più efficiente se il compilatore è in grado di non prevedere alias, condizione impostabile con __restrict, noalias o restrict.

    Nota:

    È possibile attivare o disattivare l'ottimizzazione globale funzione per funzione utilizzando il pragma optimize con l'opzione g.

L'opzione /Og attiva inoltre l'ottimizzazione del valore restituito denominato che elimina il costruttore e il distruttore di copia di un valore restituito basato sullo stack. Per ulteriori informazioni, vedere /O1, /O2 (Riduci dimensione, Ottimizza velocità).

Per informazioni correlate, vedere Genera funzioni intrinseche (/Oi) e Ottimizzazione completa (/Ox).

/Og è obsoleto in Visual C++ 2005. Utilizzare /O1 oppure /O2. Per ulteriori informazioni, vedere Opzioni del compilatore obsolete in Visual C++ 2005.

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 Procedura: aprire le pagine delle proprietà dei progetti.

  2. Fare clic sulla cartella C/C++.

  3. Fare clic sulla pagina delle proprietà Riga di comando.

  4. Digitare l'opzione di compilazione nella casella Opzioni aggiuntive.

Per impostare l'opzione del compilatore a livello di codice

Vedere anche

Riferimenti

Opzioni /O (Ottimizza codice)

Opzioni del compilatore

Impostazione delle opzioni del compilatore