Codeoptimierung

Durch die Optimierung einer ausführbaren Datei können Sie einen Kompromiss zwischen einer hohen Ausführungsgeschwindigkeit und einer geringen Codegröße erzielen. In diesem Thema werden einige der Mechanismen erläutert, die Visual Studio bereitstellt, um Ihnen die Optimierung von Code zu erleichtern.

Sprachfunktionen

In den folgenden Themen werden einige der Optimierungsfeatures in der Programmiersprache C/C++ beschrieben.

Pragmas und Schlüsselwörter für die Optimierung
Eine Liste von Schlüsselwörtern und Pragmas, die Sie im Code verwenden können, um die Leistung zu verbessern.

Compileroptionen (nach Kategorie sortiert)
Eine Liste von /O-Compileroptionen, die sich speziell auf die Ausführungsgeschwindigkeit oder Codegröße auswirken.

Rvalue-Verweisdeklarator: &&
Rvalue-Verweise unterstützen die Implementierung von Move-Semantik. Wenn die Move-Semantik zum Implementieren von Vorlagenbibliotheken verwendet wird, kann sich die Leistung von Anwendungen, die diese Vorlagen verwenden, erheblich verbessern.

Das optimize-Pragma

Wenn ein optimierter Codeabschnitt zu Fehlern oder einer Verlangsamung führt, können Sie das optimize-Pragma verwenden, um die Optimierung für diesen Abschnitt zu deaktivieren.

Schließen Sie den Code, wie hier gezeigt, zwischen zwei Pragmas ein:

#pragma optimize("", off)
// some code here
#pragma optimize("", on)

Programmierverfahren

Beim Kompilieren des Codes mit Optimierung werden möglicherweise zusätzliche Warnmeldungen angezeigt. Dieses Verhalten wird erwartet, da einige Warnungen nur mit optimiertem Code in Zusammenhang stehen. Viele Optimierungsprobleme lassen sich vermeiden, wenn Sie diese Warnungen beachten.

Wenn Sie ein Programm hinsichtlich der Geschwindigkeit optimieren, kann dies paradoxerweise dazu führen, dass Code langsamer ausgeführt wird. Dies liegt daran, dass einige Optimierungen für die Geschwindigkeit zu mehr Code führen. Beispielsweise entfällt durch das Inlining von Funktionen der Mehraufwand von Funktionsaufrufen. Durch das Inlining von zu viel Code kann das Programm jedoch so groß werden, dass die Anzahl der Seitenfehler des virtuellen Arbeitsspeichers zunimmt. Daher kann die durch das Eliminieren von Funktionsaufrufen gewonnene Geschwindigkeit bei der Speicherauslagerung verloren gehen.

In den folgenden Themen werden gute Programmierverfahren erläutert.

Tipps zum Verbessern von zeitkritischem Code
Durch bessere Codierungstechniken wird eine bessere Leistung erzielt. In diesem Thema werden Codierungstechniken vorgeschlagen, mit deren Hilfe sichergestellt werden kann, dass die zeitkritischen Teile des Codes zufriedenstellend funktionieren.

Bewährte Methoden für die Optimierung
Dieses Thema enthält allgemeine Richtlinien für eine bestmögliche Optimierung Ihrer Anwendung.

Debuggen von optimiertem Code

Da sich durch die Optimierung der vom Compiler erstellte Code möglicherweise ändert, empfiehlt es sich, die Anwendung zu debuggen, ihre Leistung zu messen und dann den Code zu optimieren.

Die folgenden Themen enthalten Informationen zum Debuggen von Releasebuilds.

Die folgenden Themen enthalten Informationen dazu, wie Sie das Erstellen, Laden und Ausführen Ihres Codes optimieren.

In diesem Abschnitt

Pragmas und Schlüsselwörter für die Optimierung
Erhöhen des Compilerdurchsatzes
Warum Gleitkommazahlen an Genauigkeit verlieren können
IEEE-Gleitkommadarstellung
Tipps zum Verbessern von zeitkritischem Code
Bei Verwendung eines Funktionsnamens ohne "()" wird kein Code generiert
Bewährte Methoden für die Optimierung
Profilgesteuerte Optimierungen
Umgebungsvariablen für profilgesteuerte Optimierungen
PgoAutoSweep
pgomgr
pgosweep
Vorgehensweise: Zusammenführen mehrerer PGO-Profile in einem einzigen Profil

Siehe auch

Referenz zur C/C++-Erstellung