Freigeben über


/LTCG (Code zur Verknüpfungszeit generieren)

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

Hinweise

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

  • :PGINSTRUMENT (optional)
    Gibt an, dass der Linker eine PGD-Datei zur Vorbereitung von instrumentierten Testausführungen der Anwendung gibt.Sie können die /PGD Option, um einen Dateinamen oder Speicherort für die PGD-Datei anzugeben.

    Die von instrumentierten Ausführungen gesammelten Daten zum Erstellen einer optimierten Bilds.Weitere Informationen finden Sie unter Profilgesteuerte Optimierung (PGO).Die Kurzform dieser Option ist /LTCG:PGI.

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

  • :PGUPDATE (optional)
    Kann eine Liste von Eingabedateien hinzugefügt oder geändert von, was im angegeben wurde der: PGINSTRUMENT-Phase.Jedoch neuen Eingabedateien werden nicht mit profilgesteuerten Optimierungen optimiert und geänderte Teile einer Eingabedatei, Profildaten ungültig, die während der Instrumentation-Phase für diesen Code gesammelten, sind nicht mit profilgesteuerten Optimierungen optimiert.Weitere Informationen finden Sie unter Profilgesteuerte Optimierung (PGO).Die Kurzform dieser Option ist /LTCG:PGU.

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

Mit den folgenden Ausnahmen wurden Linkeroptionen kann nicht hinzugefügt werden, um die/LTCG: PGOPTIMIZE oder/LTCG: PGUPDATE ausführen zu können, nicht in die/LTCG: PGINSTRUMENT auszuführen:

Alle zu/LTCG: PGINSTRUMENT angegeben sind Linkeroptionen müssen nicht zu/LTCG: PGOPTIMIZE angegeben werden; Sie sind impliziert.

Der Rest dieses Themas erläutert/LTCG an Link-Zeitcodegenerierung.

/LTCG ist in /GL integriert.

Der Linker Link-Zeitcodegenerierung aufruft, wenn sie ein Modul übergeben wird, die mithilfe von kompiliert wurde /GL oder ein MSIL-Modul (siehe .NETMODULE-Dateien als Eingabe für den Linker).Wenn Sie nicht explizit angeben /LTCG Wenn Sie übergeben /GL oder MSIL-Modulen an den Linker, der Linker schließlich erkennt dies und startet neu den Link mit /LTCG.Explizit angeben, /LTCG Wenn Sie übergeben /GL und MSIL-Modulen an den Linker für die schnellstmögliche erstellen Leistung.

/LTCGgilt nicht für die Verwendung mit /INCREMENTAL.

Wenn /LTCG werden mithilfe von kompilierte Modulen verknüpft /Og, /O1, /O2, oder /Ox, die folgenden Optimierungsschritte ausgefü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)

HinweisHinweis

Der Linker entscheidet, welche Optimierungen jede Funktion kompiliert wurde und die gleichen Optimierungen zur Verknüpfungszeit gilt.

Mit /LTCG und /Ogt Ursachen doppelter Ausrichtung.

Wenn /LTCG und /Ogs angegeben sind, erfolgt keine doppelte Ausrichtung.Wenn die meisten Funktionen in einer Anwendung für die Geschwindigkeit, mit wenigen Funktionen nach Größe kompiliert werden (beispielsweise mithilfe der optimieren Pragma), der Compiler Double richtet die Funktionen, die für die Größe optimiert werden, wenn sie Funktionen aufrufen, die eine doppelte Ausrichtung erfordern.

Wenn der Compiler alle Aufrufsites einer Funktion identifizieren kann, wird der Compiler explizite Aufrufkonvention Modifizierer in einer Funktion ignoriert und versucht, 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 ein Funktion stellen außerhalb eines Moduls aufgerufen wird, die mithilfe von kompiliert wird /GL, der Compiler versucht nicht, die Aufrufkonvention einer Funktion zu optimieren.

HinweisHinweis

Bei Verwendung von /LTCG und definieren Sie MainCRTStartup, Ihre Anwendung kann zu unvorhersehbarem Verhalten, die sich auf Benutzercode, der ausgeführt wird, vor Initialisierung globaler Objekte sind verfügen.Es gibt drei Möglichkeiten, um dieses Problem zu beheben: Definieren Sie MainCRTStartup nicht neu, kompilieren Sie die Datei mit MainCRTStartup mit nicht /LTCG, oder Initialisieren Sie globale Variablen und Objekte statisch.

/LTCG und MSIL-Module

Module, die mithilfe von kompiliert werden /GL und /CLR kann als Eingabe für den Linker verwendet werden Wenn /LTCG angegeben ist.

  • /LTCGakzeptiert systemeigene Objektdateien, gemischte systemeigene/verwaltete Objektdateien (kompiliert mit /clr), reine Objektdateien (kompiliert mit /clr:pure), und sichere Objektdateien (kompiliert mit /clr:safe)

  • /LTCG akzeptiert sichere.netmodules unterstützen, die mit erstellt werden können /clr:safe /LN in Visual C++ und /target:module in anderen Visual Studio-Compiler..Netmodules erzeugt, indem**/clr** oder /clr:pure von nicht akzeptiert werden /LTCG.

  • / LTCG: PGI akzeptiert keine systemeigenen Module kompiliert mit /GL und /clr, oder reine Module (mithilfe von /clr:pure)

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

  1. Öffnen Sie das Dialogfeld Eigenschaftenseiten des Projekts.Weitere Informationen finden Sie unter Ändern von Projekteinstellungen.

  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 auch anwenden, /LTCG auf bestimmte Builds durch Auswahl bauen, Profilgesteuerte Optimierung auf der Menüleiste, oder indem Sie eine der Optionen Profilgesteuerte Optimierung im Kontextmenü für das Projekt.

So legen Sie diese Compileroption programmgesteuert fest

Siehe auch

Referenz

Festlegen von Linkeroptionen

Linkeroptionen