/LTCG (Generowanie łączonych kodów czasowych)
/LTCG[:NOSTATUS|:STATUS|:PGINSTRUMENT|:PGOPTIMIZE|:PGUPDATE]
Uwagi
: NOSTATUS | : Stan (opcjonalnie)
Określa, czy program łączący wyświetla wskaźnik postępu, który pokazuje, jaki procent łącze jest kompletny.Domyślnie te informacje o stanie nie jest wyświetlane.: PGINSTRUMENT (opcjonalnie)
Określa, że program łączący wyprowadza plik .pgd w przygotowaniu do badania oprzyrządowanego działa w aplikacji.Można użyć /PGD opcję, aby określić nazwę pliku lub lokalizację dla pliku .pgd.Dane zebrane od oprzyrządowanego tras umożliwia tworzenie zoptymalizowanego obrazu.Aby uzyskać więcej informacji, zobacz Profilu z przewodnikiem optymalizacji.Krótka forma ta opcja jest /LTCG:PGI.
: PGOPTIMIZE (opcjonalnie)
Określa, że program łączący używa danych profilu, który jest tworzony po uruchomieniu pliku binarnego oprzyrządowanego na tworzenie zoptymalizowanego obrazu.Wszystkie pliki wejściowe muszą być takie same jak pliki, które zostały określone w /LTCG:PGI.Aby uzyskać więcej informacji, zobacz Profilu z przewodnikiem optymalizacji.Krótka forma ta opcja jest /LTCG:PGO.: PGUPDATE (opcjonalnie)
Włącza listę plików wejściowych, które mają być dodane lub zmodyfikowane od jak określono w: faza PGINSTRUMENT. Jednak nowe pliki wejściowe nie są zoptymalizowane przy użyciu profilu z przewodnikiem optymalizacje i zmienionych części zmodyfikowanego pliku wejściowego, które unieważniają profilu danych zebranych w fazie instrumentacji dla tego kodu nie są zoptymalizowane przy użyciu profilu z przewodnikiem optymalizacje. Aby uzyskać więcej informacji, zobacz Profilu z przewodnikiem optymalizacji.Krótka forma ta opcja jest /LTCG:PGU.
Opcja /LTCG informuje linker wywołać kompilator i wykonywać optymalizacja całego programu.Możesz również wykonać profil z przewodnikiem optymalizacji.Aby uzyskać więcej informacji, zobacz Profilu z przewodnikiem optymalizacji.
Z następującymi wyjątkami opcje linker nie można dodać do /LTCG:PGOPTIMIZE lub /LTCG:PGUPDATE uruchamiania, która nie zostały określone w /LTCG:PGINSTRUMENT, uruchom:
Wszelkie linker opcje, które są określone na /LTCG:PGINSTRUMENT nie trzeba określać do /LTCG:PGOPTIMIZE; oni są implikowane.
Pozostałej części tego tematu omówiono /LTCG pod względem generowania kodu czasu łącze.
/ Jest implikowane LTCG, z /GL.
Linker wywołuje generowania kodu łącze w czasie, jeśli jest przekazywana moduł, który został skompilowany przy użyciu /GL lub moduł MSIL (zobacz Pliki .netmodule — Wejście konsolidatora).Jeśli nie zostanie jawnie określony /LTCG podczas przekazywania /GL lub modułów MSIL linker, ostatecznie linker wykryje to i ponownie uruchamia łącza za pomocą /LTCG.Jawnie określić /LTCG podczas przekazywania /GL i moduły MSIL linker uzyskania możliwie najszybciej budować wydajności.
/LTCGnie nadaje się do użytku z /INCREMENTAL.
Gdy /LTCG służy do łączenia modułów skompilowane przy użyciu /Og, /O1, /O2, lub /Ox, wykonywane są następujące optymalizacji:
Cross moduł inline
Alokacja rejestru interprocedural (tylko systemy operacyjne 64-bitowe)
Niestandardowe konwencja wywołania (tylko x 86)
Małej pojemności TLS (tylko x 86)
Wyrównanie podwójnego stosu (tylko x 86)
Amerykańscy poprawę pamięci (lepszej informacji zakłócenia dla globalnych zmiennych i parametrów wejściowych)
[!UWAGA]
Program łączący decyduje, które optymalizacje został skompilowany z każdej funkcji i zastosuje ten sam Optymalizacja w czasie łącze.
Za pomocą /LTCG i /Ogt powoduje wyrównanie podwójne optymalizacji.
Jeśli /LTCG i /Ogs są określone, podwójne wyrównanie nie jest wykonywane.Jeśli większość funkcji w aplikacji są kompilowane dla prędkości, z kilku funkcji sporządzanych dla rozmiaru (na przykład za pomocą optymalizacji pragmy), kompilator podwójne wyrównuje funkcje, które są zoptymalizowane pod kątem wielkości, jeśli wywołanie funkcji, które wymagają podwójne wyrównanie.
Jeśli kompilator może wskazywać wszystkie witryny wywołanie funkcji, kompilator ignoruje jawne modyfikatorów Konwencji telefonicznej do funkcji i stara się zoptymalizować konwencja wywołania funkcji:
przekazywanie parametrów do rejestrów
Zmiana kolejności parametrów dla wyrównania
Usuń nieużywane parametry
Jeśli funkcja jest wywoływana za pomocą wskaźnika funkcji lub marka funkcja nazywa się poza modułem, który jest kompilowany przy użyciu /GL, kompilator nie będzie podejmował próby optymalizacji konwencja wywołania funkcji.
[!UWAGA]
Jeśli używasz /LTCG i mainCRTStartup, zmiany definicji aplikacji może być nieprzewidywalne zachowanie, który odnosi się do kodu użytkownika, który wykonuje przed obiekty globalne są inicjowane. Istnieją trzy sposoby rozwiązania tego problemu: nie zmienić definicję mainCRTStartup, nie skompilować plik, który zawiera mainCRTStartup przy użyciu /LTCG, lub zainicjować zmiennych globalnych i obiekty statycznie.
/ LTCG i moduły MSIL
Moduły, które są kompilowane za pomocą /GL i /CLR może być używany jako dane wejściowe do linker po /LTCG jest określony.
/LTCGmoże akceptować pliki obiektu macierzystego, mieszane pliki obiektu zarządzanego w trybie macierzystym (skompilowane przy użyciu /clr), czysty obiektu plików (skompilowane przy użyciu /clr:pure) oraz pliki bezpiecznego obiektu (skompilowane przy użyciu /clr:safe)
/LTCGmoże akceptować bezpieczne .netmodules, które mogą być tworzone za pomocą /clr:safe /LN w programie Visual C++ i /target:module w innych kompilatora Visual Studio. .Netmodules tworzone za pomocą**/clr** lub /clr:pure nie są akceptowane przez /LTCG.
/LTCG:PGI nie akceptuje modułów macierzystych skompilowane przy użyciu /GL i /clr, lub czystej modułów (tworzone za pomocą /clr:pure)
Aby ustawić tę opcję kompilatora w środowisku programowania Visual Studio
Otwórz okno dialogowe Strony właściwości dla projektu.Zobacz Praca z właściwościami projektu.
Wybierz Właściwości konfiguracji folder.
Wybierz stronę właściwości Ogólne.
Modyfikowanie Cały Program optymalizacji właściwości.
Można również stosować /LTCG do konkretnych buduje wybierając budować, Profilu z przewodnikiem optymalizacji na pasku menu lub wybierając jedną z opcji optymalizacji z przewodnikiem profil w menu skrótów dla projektu.
Aby programowo ustawić tę opcję kompilatora
- Zobacz LinkTimeCodeGeneration.