/Og (Globale Optimierungen)
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.
Tipp
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 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
Öffnen Sie das Dialogfeld Eigenschaftenseiten des Projekts. Ausführliche Informationen finden Sie unter Gewusst wie: Öffnen von Projekteigenschaftenseiten.
Klicken Sie auf den Ordner C/C++.
Klicken Sie auf die Eigenschaftenseite für die Befehlszeile.
Geben Sie die Compileroption im Feld Zusätzliche Optionen ein.
So legen Sie diese Compileroption programmgesteuert fest
- Siehe AdditionalOptions.