Gibt es eine vollständige Liste der Optimierungen, die durch den / optimierten C # -Compilerschlüssel
BEARBEITEN: Warum ist es standardmäßig deaktiviert? Lohnt es sich, in einer echten App zu verwenden? - es ist standardmäßig nur in der Debug-Konfiguration und in Release aktiviert.
Scott Hanselman hat einen Blogbeitrag , der einige Beispiele für was / optimize zeigt (was in Release aktiviert ist) Builds).
Als Zusammenfassung: / optimize macht viele Dinge ohne genaue Zahl oder Definition, aber eine der sichtbarsten sind Methodeninlining (Wenn Sie eine Methode A () haben, die B () aufruft, die C () aufruft, die aufruft D (), kann der Compiler "B" und "C" "überspringen" und direkt von A nach D gehen, was einen "seltsamen" Callstack im Release-Build verursachen kann.
Es ist standardmäßig für Debug-Builds deaktiviert. Für Release-Builds ist es aktiviert.
Es lohnt sich, diesen Schalter zu aktivieren, da der Compiler abhängig von der Art des Codes viele Optimierungen und Optimierungen vornimmt. Zum Beispiel: Überspringe redundante Initialisierungen, Vergleiche, die sich niemals ändern usw.
Hinweis: Sie haben möglicherweise Schwierigkeiten beim Debuggen, wenn Sie die Optimierung als Code aktivieren und der generierte IL-Code möglicherweise nicht übereinstimmt. Aus diesem Grund ist es nur für Release-Builds aktiviert.
Zitiert von der MSDN-Seite :
Die Option / optimize aktiviert oder deaktiviert Optimierungen von der Compiler, um Ihre Ausgabedatei zu erstellen kleiner, schneller und effizienter.
Mit anderen Worten, es macht genau das, was Sie denken - optimiert den kompilierten CIL-Code (Common Intermediate Language), der von der .NET-VM ausgeführt wird. Ich mache mir keine Gedanken darüber, was die spezifischen Optimierungen sind - es genügt zu sagen, dass sie viele sind und in manchen Fällen wahrscheinlich ziemlich komplex sind. Wenn Sie wirklich daran interessiert sind, was für Dinge es tut, könnten Sie wahrscheinlich den Mono C # -Compiler untersuchen (ich bezweifle die Details über die MS C # one sind öffentlich).
Der Grund, warum die Optimierung für Debug -Konfigurationen standardmäßig deaktiviert ist, ist, dass bestimmte Debugging-Funktionen nicht möglich sind. Ein paar bemerkenswerte:
Wirklich, die Standardoptionen für die Optimierung sollten nie geändert werden. Das Deaktivieren der Option zum Debuggen ist sehr hilfreich, während es für den Release-Modus ebenfalls ratsam ist.
Tags und Links optimization c# compiler-construction