Freigeben über


/Og (Globale Optimierungen)

Aktualisiert: November 2007

Bietet lokale und globale Optimierungen, automatische Registerreservierung und Schleifenoptimierung. Diese Option ist veraltet.

/Og

Hinweise

Die folgenden Optimierungen sind verfügbar:

  • Entfernen lokaler und globaler gemeinsamer Teilausdrücke

    Bei dieser Optimierung wird der Wert eines gemeinsamen Teilausdrucks nur einmal berechnet. Wenn sich im folgenden Beispiel die Werte b und c zwischen den drei Ausdrücken nicht ändern, kann der Compiler das Ergebnis aus b + c einer temporären Variablen zuweisen und b + c durch diese Variable ersetzen.

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

    Bei der Optimierung lokaler gemeinsamer Teilausdrücke durchsucht der Compiler kurze Codeabschnitte nach gemeinsamen Teilausdrücken. Bei der Optimierung globaler gemeinsamer Teilausdrücke durchsucht der Compiler ganze Funktionen nach gemeinsamen Teilausdrücken.

  • Automatische Registerreservierung

    Diese Optimierung ermöglicht es dem Compiler, häufig verwendete Variablen und Teilausdrücke in Registern zu speichern. Das Schlüsselwort register wird ignoriert.

  • Schleifenoptimierung

    Bei dieser Optimierung werden gleichbleibende Teilausdrücke aus dem Rumpf einer Schleife entfernt. Eine optimale Schleife enthält nur Ausdrücke, deren Wert sich bei der Ausführung der Schleife ändert. Im folgenden Beispiel ändert sich der Ausdruck x + y im Schleifenrumpf nicht:

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

    Nach der Optimierung wird x + y nur einmal berechnet, statt bei jeder Ausführung der Schleife:

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

    Die Schleifenoptimierung arbeitet wesentlich effektiver, wenn der Compiler davon ausgehen kann, dass kein Aliasing verwendet wird. Dies können Sie mit __restrict, noalias oder restrict festlegen.

    Hinweis:

    Sie können die globale Optimierung für jede Funktion aktivieren oder deaktivieren, indem Sie das optimize -Pragma mit der Option g verwenden.

Mit /Og wird außerdem die Optimierung des benannten Rückgabewerts aktiviert. Kopierkonstruktor und -destruktor eines stapelbasierten Rückgabewerts werden dadurch eliminiert. Weitere Informationen finden Sie unter /O1, /O2 (Größe minimieren, Geschwindigkeit maximieren).

Weitere Informationen finden Sie unter Generieren systeminterner Funktionen (/Oi) und Komplette Optimierung (/Ox).

/Og ist in Visual C++ 2005 veraltet. Verwenden Sie stattdessen entweder /O1 oder /O2. Weitere Informationen finden Sie unter Veraltete Compileroptionen in Visual C++ 2005.

So legen Sie diese Compileroption in der Visual Studio-Entwicklungsumgebung fest

  1. Öffnen Sie das Dialogfeld Eigenschaftenseiten des Projekts. Ausführliche Informationen finden Sie unter Gewusst wie: Öffnen von Projekteigenschaftenseiten.

  2. Klicken Sie auf den Ordner C/C++.

  3. Klicken Sie auf die Eigenschaftenseite für die Befehlszeile.

  4. Geben Sie die Compileroption im Feld Zusätzliche Optionen ein.

So legen Sie diese Compileroption programmgesteuert fest

Siehe auch

Referenz

/O-Optionen (Code optimieren)

Compileroptionen

Festlegen von Compileroptionen