Ohne Optimierungen erzeugt der Compiler sehr dummen Code - jeder Befehl wird auf sehr einfache Weise kompiliert, so dass er das beabsichtigte tut. In den Debug-Builds sind Optimierungen standardmäßig deaktiviert, da die erstellte ausführbare Datei ohne die Optimierungen auf einfache Weise mit dem Quellcode übereinstimmt.
In Registern gespeicherte Variablen
Sobald Sie die Optimierungen aktiviert haben, wendet der Compiler viele verschiedene Techniken an, um den Code schneller auszuführen, während Sie immer noch dasselbe tun. Der offensichtlichste Unterschied zwischen optimierten und nicht optimierten Builds in Visual C ++ besteht darin, dass die Variablenwerte in optimierten Builds so lange wie möglich in Registern gespeichert werden, während sie ohne Optimierungen immer im Speicher gespeichert werden. Dies wirkt sich nicht nur auf die Codegeschwindigkeit aus, sondern auch auf das Debuggen. Aufgrund dieser Optimierung kann der Debugger beim Durchlaufen des Codes keinen zuverlässigen Variablenwert erhalten.
Andere Optimierungen
Der Compiler wendet mehrere andere Optimierungen an, wie in den MSDN-Dokumenten zu / O-Optionen (Code optimieren) beschrieben . Eine allgemeine Beschreibung verschiedener Optimierungstechniken finden Sie im Wikipedia Compiler Optimization-Artikel .