/ LTCG (generowanie kodu czasu łącza)

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

Uwagi

  • : NOSTATUS | : STATUS (opcjonalnie)
    Określa, czy program łączący wyświetla wskaźnik postępu, który wskazuje, jaki procent łącze jest kompletny.Domyślnie nie jest wyświetlane informacje o stanie.

  • : PGINSTRUMENT (opcjonalnie)
    Określa, że program łączący wyprowadza się że plik .pgd w przygotowanie do badania oprzyrządowanego działa na wniosek.Można użyć /PGD opcję, aby określić nazwę pliku lub lokalizację dla pliku .pgd.

    Dane zebrane od oprzyrządowanego uruchamia jest używany do utworzenia obrazu zoptymalizowanego.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, utworzony po uruchomieniu oprzyrządowanego plik binarny do utworzenia obrazu zoptymalizowanego.Wszystkie pliki wejściowe muszą być identyczne z plików, 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)
    Lista plików wejściowych dodawane lub modyfikowane z określono w umożliwia: faza PGINSTRUMENT.Nowe pliki wejściowe nie są zoptymalizowane przy użyciu optymalizacje przewodnikiem profilu i zmienionych części zmodyfikowanego pliku wejściowego, które unieważnia profilu danych zebranych w fazie instrumentacji dla tego kodu nie są zoptymalizowane przy użyciu optymalizacje przewodnikiem profilu.Aby uzyskać więcej informacji, zobacz Profilu z przewodnikiem optymalizacji.Krótka forma ta opcja jest /LTCG:PGU.

Opcja /LTCG informuje program łączący wywołać kompilator i wykonywać optymalizacja całego programu.Można także utworzyć profil z przewodnikiem optymalizacji.Aby uzyskać więcej informacji, zobacz Profilu z przewodnikiem optymalizacji.

Z następującymi wyjątkami nie można dodać opcje program łączący do /LTCG:PGOPTIMIZE lub /LTCG:PGUPDATE uruchomić, które nie zostały określone w /LTCG:PGINSTRUMENT, uruchom:

Opcje linker, które są określone do /LTCG:PGINSTRUMENT nie trzeba określać do /LTCG:PGOPTIMIZE; są implikowane.

Pozostałe w tym temacie omówiono /LTCG w zakresie generowania kodu czasu łącza.

/ LTCG jest wprost z /GL.

Program łączący wywołuje generowanie kodu czasu łącza, jeśli przeszedł on moduł, który został skompilowany przy użyciu /GL lub moduł MSIL (zobacz pliki .netmodule jako dane wejściowe Linker).Jeśli nie zostanie jawnie określony /LTCG podczas przekazywania /GL lub modułów MSIL łączący ostatecznie łączący wykrywa i ponownie uruchamia połączenie za pomocą /LTCG.Jawnie określić /LTCG podczas przekazywania /GL i moduły MSIL łączący na możliwie najszybsze kompilacji wydajności.

/LTCGnie jest prawidłowy dla użycia z /INCREMENTAL.

Gdy /LTCG jest używane do łączenia kompilowane przy użyciu modułów /Og, /O1, /O2, lub /Ox, wykonywane są następujące optymalizacje:

  • Cross moduł inline

  • Alokacja rejestru interprocedural (tylko systemy operacyjne 64-bitowe)

  • Niestandardowe konwencja wywołania (tylko x 86)

  • Małe przemieszczenie TLS (tylko x 86)

  • Podwójne wyrównanie stosu (tylko x 86)

  • Ulepszone pamięci słowa (lepszej informacji zakłócenia dla globalnych zmiennych i parametrów wejściowych)

[!UWAGA]

Program łączący decyduje, które optymalizacje każdej funkcji został skompilowany z i zastosuje ten sam optymalizacje 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 kilka funkcji sporządzanych dla rozmiaru (na przykład za pomocą optymalizacji pragma), 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żna zidentyfikować wszystkie witryny wywołanie funkcji, kompilator ignoruje jawne modyfikatorów konwencja wywołania funkcji i stara się zoptymalizować konwencja wywołania funkcji:

  • przekazać parametry 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ł, który jest kompilowana przy użyciu /GL, kompilator nie próbuje zoptymalizować konwencja wywołania funkcji.

[!UWAGA]

Jeśli korzystasz z /LTCG i odpowiednio mainCRTStartup, aplikacja może mieć nieprzewidywalne zachowanie, które odnosi się do kodu użytkownika, który zostanie wykonany przed obiekty globalne są inicjowane.Istnieją trzy sposoby rozwiązania tego problemu: nie zdefiniować ponownie odpowiednio mainCRTStartup, nie skompilować plik, który zawiera odpowiednio mainCRTStartup za pomocą /LTCG, lub zainicjować zmiennych globalnych i obiekty statycznie.

/ LTCG i instrukcje MSIL modułów

Moduły, które są kompilowane przy użyciu /GL i /CLR mogą być używane jako dane wejściowe do programu łączącego podczas /LTCG jest określony.

  • /LTCGmoże akceptować pliki obiektu macierzystego, mieszane pliki obiekt zarządzanego w trybie macierzystym (kompilowane przy użyciu /clr), czysty obiektu plików (kompilowane przy użyciu /clr:pure) i pliki bezpiecznego obiektu (kompilowane przy użyciu /clr:safe)

  • /LTCGmożna zaakceptować bezpieczne.netmodules, można utworzyć za pomocą /clr:safe /LN w programie Visual C++ i /target:module w innych kompilator Visual Studio..Netmodules wyprodukowane przy użyciu**/clr** lub /clr:pure nie są akceptowane przez /LTCG.

  • /LTCG:PGI nie akceptuje modułów macierzystych kompilowane przy użyciu /GL i /clr, lub czystej modułów (wyprodukowane przy użyciu /clr:pure)

Aby ustawić tę opcję kompilatora w środowisku projektowym programu Visual Studio

  1. Otwórz projekt Stron właściwości okno dialogowe.See Modyfikowanie ustawień projektu.

  2. Wybierz Właściwości konfiguracji folder.

  3. Wybierz Ogólne stronę właściwości.

  4. Modyfikowanie Cały Program optymalizacji właściwości.

Można również zastosować /LTCG do szczególnych kompilacje wybierając budować, Profilu z przewodnikiem optymalizacji na pasku menu lub wybierając jedną z opcji optymalizacji z przewodnikiem profilu dla projektu, w menu skrótów.

Aby programowo ustawić tę opcję kompilatora

Zobacz też

Informacje

Ustawianie opcji Linker

Opcje Linker