/LTCG (Code zur Verknüpfungszeit generieren)

/LTCG[:NOSTATUS|:STATUS|:PGINSTRUMENT|:PGOPTIMIZE|:PGUPDATE]

Hinweise

  • :NOSTATUS | :STATUS (optional)
    Gibt an, ob der Linker eine Statusanzeige die Aufschluss anzeigt, welcher Prozentsatz des Links abgeschlossen ist. Standardmäßig werden diese Statusinformationen nicht angezeigt.

  • :PGINSTRUMENT (optional)
    Gibt an, dass der Linker einer PGD-Datei in der Pipeline auf instrumentierte Testläufe auf der Anwendung ausgegeben. Sie können die Option /PGD verwenden, einen Dateinamen oder einen Speicherort für die PGD-Datei anzugeben.

    Die Daten, die von den instrumentierten Ausführungen erfasst wird, werden verwendet, um ein optimiertes Abbild zu erstellen. Weitere Informationen finden Sie unter Profilgesteuerte Optimierung (PGO). Die Kurzform dieser Option ist /LTCG:PGI.

  • :PGOPTIMIZE (optional)
    Gibt an, dass der Linker die Profildaten verwendet, die erstellt wird, nachdem die instrumentierte Binärdatei ausgeführt wird, um ein optimiertes Abbild zu erstellen. Alle müssen Eingabedateien zu Dateien identisch sein, die in /LTCG:PGIangegeben wurden. Weitere Informationen finden Sie unter Profilgesteuerte Optimierung (PGO). Die Kurzform dieser Option ist /LTCG:PGO.

  • :PGUPDATE (optional)
    Aktiviert eine Liste hinzugefügt werden oder geändert wurden aus den Eingabedateien, aus, was angegeben wurde: PGINSTRUMENT-Phase. Allerdings werden keine neuen Eingabedateien nicht optimiert, indem profilgesteuerten Optimierungen verwendet, und geänderte Teile einer geänderten Eingabedatei, die Bearbeitung ungültig machen, die während der Instrumentationsphase für diesen Code erfasst wird, werden nicht optimiert, indem profilgesteuerten Optimierungen verwendet. Weitere Informationen finden Sie unter Profilgesteuerte Optimierung (PGO). Die Kurzform dieser Option ist /LTCG:PGU.

Die /LTCG- Option weist den Linker an, den Compiler aufzurufen und Optimierung auszuführen. Sie können auch eine profilgesteuerte Optimierung durchführen. Weitere Informationen finden Sie unter Profilgesteuerte Optimierung (PGO).

Mit den folgenden Ausnahmen können Sie die Linkeroptionen nicht /LTCG:PGOPTIMIZE hinzufügen, oder Ausführen /LTCG:PGUPDATE, das nicht in /LTCG:PGINSTRUMENT angegeben wurden, werden ausgeführt:

Keine Linkeroptionen, die zu /LTCG:PGINSTRUMENT angegeben werden, müssen nicht zur /LTCG:PGOPTIMIZEangegeben werden; sie sollen.

Der Rest dieses Themas werden /LTCG hinsichtlich Codegenerierung während der Verknüpfung.

/LTCG ist in /GL integriert.

Der Linker ruft Codegenerierung während der Verknüpfung auf, wenn ein Modul übergeben wird, das kompiliert wurde, indem Sie /GL oder ein MSIL-Modul verwendet (siehe .NETMODULE-Dateien als Eingabe für den Linker). Wenn Sie /LTCG nicht explizit angeben, wenn Sie /GL oder MSIL-Module den Linker übergeben, erkennt der Linker schließlich dieses und startet den Link neu mit /LTCG verwendet. Geben Sie explizit /LTCG an, wenn Sie /GL und MSIL-Module den Linker für die schnellstmögliche Buildleistung führen.

/LTCG ist für die Verwendung mit /INCREMENTAL ungültig.

Wenn /LTCG an Linkmodulen verwendet wird, die durch /Og, /O1, /O2 oder /Ox kompiliert werden, verwendet, die nächsten Optimierungen durchgeführt:

  • Inlineoptimierung über verschiedene Module hinweg

  • Interprozedurale Registerreservierung (nur bei 64-Bit-Betriebssystemen)

  • Benutzerdefinierte Aufrufkonvention (nur x86)

  • Geringe TLS-Verschiebung (nur x86)

  • Doppelte Stapelausrichtung (nur x86)

  • Verbesserte Speichereindeutigkeit (verbesserte Interferenzinformationen für globale Variablen und Eingabeparameter)

Hinweis

Der Linker entscheidet, Optimierungen, den jede Funktion mit kompiliert wurden und enthält dieselben Optimierungen an der Verknüpfung auf.

Mit /LTCG und der /Ogt Ursachendoubleausrichtungsoptimierung.

Wenn /LTCG und /Ogs angegeben sind, wird Ausrichtung doppelte nicht ausgeführt. Wenn die meisten Features in einer Anwendung für Geschwindigkeit kompiliert werden, wenn mehrere Features für Größe kompiliert haben (beispielsweise, mithilfe des Pragmas optimieren Sie ), Double-richtet der Compiler die Funktionen aus, die für Größe optimiert werden, wenn sie Funktionen aufrufen, die doppelte Ausrichtung benötigen.

Wenn der Compiler alle Aufrufsites eine Funktion identifiziert werden kann, ignoriert der Compiler explizite Aufrufkonventionsmodifizierer auf eine Funktion, und die Aufrufkonvention der Funktion zu optimieren:

  • Übergeben von Parametern in Registern

  • Neuanordnen von Parametern zur Ausrichtung

  • Entfernen nicht verwendeter Parameter

Wenn eine Funktion über einen Funktionszeiger aufgerufen wird oder wenn eine Funktion ausführen, außerhalb eines Moduls aufgerufen wird, das kompiliert wird, indem Sie /GL verwenden, versucht der Compiler die Aufrufkonvention nicht, eine Funktion zu optimieren.

Hinweis

Wenn Sie /LTCG verwenden und mainCRTStartup neu definieren, kann die Anwendung dieses unvorhersehbaren Verhalten aufweisen, das für Benutzercode verknüpft, der ausgeführt wird, bevor globale Objekte initialisiert werden. Es gibt drei Möglichkeiten, dieses Problem zu lösen: Definieren Sie nicht mainCRTStartup, kompilieren nicht die Datei, die mainCRTStartup enthält, indem es /LTCG verwendet, initialisieren oder globale Variablen und Objekte statisch neu.

/LTCG und MSIL-Module

Module, die kompiliert werden, indem unter /GL und /clr verwendet, können verwendet werden, wie z Linker eingegeben wurden, wenn /LTCG angegeben wird.

  • /LTCG kann systemeigene Objektdateien, die gemischten systemeigenen/Dateien des verwalteten Objekts (kompiliert mit /clr), die reinen Objektdateien (kompiliert mit /clr:pure) und die sicheren Objektdateien akzeptieren (kompiliert mit /clr:safe)

  • /LTCG kann vor .netmodules akzeptieren, das erstellt werden kann, indem /clr:safe /LN in Visual C++ und /target:module in einem beliebigen anderen Visual Studio-Compiler verwendet. . Die .netmodules, die erzeugt werden, indem /clr oder /clr:pure werden von /LTCG nicht akzeptiert.

  • /LTCG:PGI akzeptiert nicht die systemeigenen Module, die mithilfe von /GL und /clr kompiliert werden, oder die reinen Modulen verwendet (erstellt mithilfe von /clr:pure)

So legen Sie diese Compileroption in der Visual Studio-Entwicklungsumgebung fest

  1. Öffnen Sie das Dialogfeld Eigenschaftenseiten des Projekts. Siehe Arbeiten mit Projekteigenschaften.

  2. Wählen Sie den Ordner Konfigurationseigenschaften aus.

  3. Wählen Sie die Eigenschaftenseite Allgemein aus.

  4. Ändern Sie die Eigenschaft Optimierung des ganzen Programms.

Sie können /LTCG auf bestimmte Builds, indem Sie Erstellen auswählen, gelten auch Profilgesteuerte Optimierung auf der Menüleiste oder eine der Optionen der profilgesteuerten Optimierungen im Kontextmenü das Projekt auswählen.

So legen Sie diese Compileroption programmgesteuert fest

Siehe auch

Referenz

Festlegen von Linkeroptionen

Linkeroptionen