/Og
(Globale Optimierungen)
Veraltet. Bietet lokale und globale Optimierungen, automatische Registerzuweisung und Schleifenoptimierung. Es wird empfohlen, stattdessen entweder /O1
(Größe minimieren) oder /O2
(Maximieren der Geschwindigkeit) zu verwenden.
Syntax
/Og
Hinweise
/Og
ist veraltet. Diese Optimierungen sind jetzt standardmäßig aktiviert, wenn optimierungen aktiviert sind. Weitere Informationen zu Optimierungen finden Sie unter /O1
, ( /O2
Minimieren von Größe, Maximieren der Geschwindigkeit) oder /Ox
(Aktivieren der meisten Geschwindigkeitsoptimierungen)
Die folgenden Optimierungen sind verfügbar unter /Og
:
Lokale und globale gemeinsame Subexpression Eliminierung
In dieser Optimierung wird der Wert eines gemeinsamen Unterausdrucks einmal berechnet. Wenn sich die Werte der
b
c
drei Ausdrücke im folgenden Beispiel nicht ändern, kann der Compiler die Berechnungb + c
einer temporären Variablen zuweisen und diese Variable fürb + c
Folgendes verwenden:a = b + c; d = b + c; e = b + c;
Bei der lokalen allgemeinen Subexpression-Optimierung untersucht der Compiler kurze Codeabschnitte für allgemeine Unterausdrücke. Für die globale allgemeine Subexpression-Optimierung durchsucht der Compiler ganze Funktionen nach allgemeinen Unterausdrücke.
Automatische Registerzuweisung
Diese Optimierung ermöglicht es dem Compiler, häufig verwendete Variablen und Unterausdrücke in Registern zu speichern. Das
register
Schlüsselwort wird standardmäßig ignoriert und verursacht eine Diagnose unter/std:c++17
oder höher.Schleifenoptimierung
Diese Optimierung entfernt invariante Subexpressionen aus dem Textkörper einer Schleife. Eine optimale Schleife enthält nur Ausdrücke, deren Werte sich durch jede Ausführung der Schleife ändern. Im folgenden Beispiel ändert sich der Ausdruck
x + y
nicht im Schleifentext:i = -100; while( i < 0 ) { i += x + y; }
Nach der Optimierung wird statt
x + y
bei jeder Ausführung der Schleife einmal berechnet:i = -100; t = x + y; while( i < 0 ) { i += t; }
Die Schleifenoptimierung ist viel effektiver, wenn der Compiler keine Aliasing annehmen kann, die Sie mit
__restrict
, oderrestrict
noalias
.Hinweis
Sie können die globale Optimierung auf Funktionsbasis aktivieren oder deaktivieren, indem Sie das
optimize
Pragma zusammen mit derg
Option verwenden.
Verwandte Informationen finden Sie unter /Oi
(Generieren systeminterner Funktionen) und /Ox
(Aktivieren der meisten Geschwindigkeitsoptimierungen).
So legen Sie diese Compileroption in der Visual Studio-Entwicklungsumgebung fest
Öffnen Sie das Dialogfeld Eigenschaftenseiten des Projekts. Weitere Informationen erhalten Sie unter Set C++ compiler and build properties in Visual Studio (Festlegen der Compiler- und Buildeigenschaften (C++) in Visual Studio).
Klicken Sie auf der Eigenschaftenseite auf Konfigurationseigenschaften>C/C++>Befehlszeile.
Geben Sie die Compileroption im Feld "Zusätzliche Optionen " ein.
So legen Sie diese Compileroption programmgesteuert fest
- Siehe AdditionalOptions.