Ausgewählte Optimierungen aktivieren
|
Aktiviert nur die Optimierungen, die Sie aus der Liste der Optimierungen auswählen. Vorgabe = False
Entfernung des toten Speichers (-Ob)
|
Entfernt überflüssige Speicherungen. Klicken Sie auf den nach unten weisenden Pfeil, um einen Wert (True, False) auszuwählen. Vorgabe = False
|
Doppelte Ausdrücke in Blöcken und Funktionen entfernen
(-Oc)
|
Weist den Compiler an, allgemeine Unterausdrücke in Anweisungsgruppen zu entfernen, die nicht durch Sprünge (Basisblöcke) und Funktionen unterbrochen sind. Diese Option entfernt global doppelte Ausdrücke im Zielgültigkeitsbereich und speichert den berechneten Wert dieser Ausdrücke einmal (anstatt den Ausdruck erneut zu berechnen). Verwenden Sie diese Option, wenn Sie Ausdrücke wiederverwenden möchten, anstatt explizite Stack-Positionen für sie zu erstellen. Vorgabe = False
|
Schleifeninduktionsvariable und Stärkereduktion aktivieren
(-Ov)
|
Weist den Compiler an, Induktionsvariablen zu erstellen und eine Stärkereduktion durchzuführen, was die Schleifengeschwindigkeit optimiert. Verwenden Sie diese Option, wenn Geschwindigkeit für Sie maßgeblich ist, und Ihr Quelltext Schleifen enthält.
Mittels Induktion werden neue Variablen (Induktionsvariablen) aus in Schleifen verwendeten Ausdrücken erstellt. Die mit diesen neuen Variablen durchgeführten Operationen benötigen weniger Rechenzeit (stärkereduziert) als jene, die von den ursprünglichen Variablen verwendet werden.
Optimierungen werden üblicherweise bei der Indizierung von Arrays in Schleifen verwendet, weil zur Berechnung der Position in dem Array, das durch den Index angegeben ist, eine Multiplikation erforderlich ist. Beispielsweise wird im folgenden Code eine Induktionsvariable aus der Operation v[i] erstellt, weil für diese Operation eine Multiplikation erforderlich ist. Durch diese Optimierung muss der Wert von i auch nicht gespeichert werden:
int v[10];
void f(int x, int y, int z)
{ int i;
for (i = 0; i < 10; i++)
v[i] = x * y * z;
}
Mit Induktionsvariablen ändert sich der Code folgendermaßen:
int v[10];
void f(int x, int y, int z)
{ int i, *p;
for (p = v; p < &v[9]; p++)
*p = x * y * z;
}
Vorgabe = False
|
Pentium-Befehlsplan aktivieren (-5)
|
Erzeugt Pentium-Instruktionen. Diese Option erhöht zwar die Ausführungsgeschwindigkeit auf Pentium-Rechnern, kann die Größe des Programms allerdings etwas erhöhen, wenn dieses mit den Optionen 80386 oder i486 compiliert wurde. Ferner ist bei für Pentium compiliertem Code mit einer Performance-Einbuße auf nicht-Pentium-Systemen zu rechnen. Vorgabe = False
|
Allgemeine intrinsische Funktionen erweitern
(-Oi)
|
Weist den Compiler an, Code für gebräuchliche Speicherfunktionen, wie strcpy() , im Gültigkeitsbereich Ihrer Funktion zu erzeugen. Dadurch ist ein Funktionsaufruf nicht mehr nötig. Der resultierende Code wird schneller ausgeführt, ist aber größer. Mit dieser Option wird für die folgenden Funktionen ein Inlining durchgeführt:
alloca , fabs , memchr , memcmp , memcpy , memset , rotl , rotr ,
stpcpy , strcat , strchr , strcmp , strcpy , strlen , strncat , strncmp , strncpy , strnset , strrchr .
Sie können das Inlining dieser Funktionen mit pragma intrinsic steuern. Beispielsweise veranlasst
den Compiler, Inline-Code für alle folgenden Aufrufe von strcpy in Ihrer Funktion zu erzeugen, und
#pragma intrinsic -strcpy
verhindert, dass der Compiler für strcpy ein Inlining durchführt. Durch die Verwendung dieser Pragmata in einer Datei werden alle Compiler-Einstellungen überschrieben.
Vorgabe = False
|
Sprünge optimieren
(-O)
|
Weist den Compiler an, die Größe des Codes zu reduzieren, indem redundante Sprünge entfernt sowie Schleifen und switch-Anweisungen neu organisiert werden. Wenn diese Option aktiviert ist, kann das schrittweise Abarbeiten des Codes im Debugger wegen der Neuanordnung und Eliminierung von Anweisungen verwirrend sein. Wenn Sie auf Assembly-Ebene debuggen, sollten Sie diese Option gegebenenfalls deaktivieren. Vorgabe = False
|
Registervariablen verwenden
(-r)
|
Weist den Compiler an, automatisch Registervariablen zuzuweisen, wenn möglich, auch wenn Sie das Schlüsselwort register nicht angeben. Vorgabe = False
|
|
Entfernung des toten Speichers -Ob
Doppelte Ausdrücke in Blöcken und Funktionen entfernen -Oc
Schleifeninduktionsvariable und Stärkereduktion aktivieren -Ov
Pentium-Befehlsplan aktivieren -5
Allgemeine intrinsische Funktionen erweitern -Oi
Sprünge optimieren -O
Registervariablen verwenden -r
|
Plattform nicht unterstützt
Plattform nicht unterstützt
Plattform nicht unterstützt
Plattform nicht unterstützt
Plattform nicht unterstützt
Plattform nicht unterstützt
Plattform nicht unterstützt
|
Plattform nicht unterstützt
Plattform nicht unterstützt
Plattform nicht unterstützt
Plattform nicht unterstützt
Plattform nicht unterstützt
Plattform nicht unterstützt
Plattform nicht unterstützt
|
Entfernung des toten Speichers -Ob
Doppelte Ausdrücke in Blöcken und Funktionen entfernen -Oc
Schleifeninduktionsvariable und Stärkereduktion aktivieren -Ov
Pentium-Befehlsplan aktivieren -5
Allgemeine intrinsische Funktionen erweitern -Oi
Sprünge optimieren -O
Registervariablen verwenden -r
|
Plattform nicht unterstützt
Plattform nicht unterstützt
Plattform nicht unterstützt
Plattform nicht unterstützt
Plattform nicht unterstützt
Plattform nicht unterstützt
Plattform nicht unterstützt
|
Plattform nicht unterstützt
Plattform nicht unterstützt
Plattform nicht unterstützt
Plattform nicht unterstützt
Plattform nicht unterstützt
Plattform nicht unterstützt
Plattform nicht unterstützt
|
Plattform nicht unterstützt
Plattform nicht unterstützt
Plattform nicht unterstützt
Plattform nicht unterstützt
Plattform nicht unterstützt
Plattform nicht unterstützt
Plattform nicht unterstützt
|