Параметр /LTCG (создание кода во время компоновки)
/LTCG[:NOSTATUS|:STATUS|:PGINSTRUMENT|:PGOPTIMIZE|:PGUPDATE]
Заметки
:NOSTATUS | :STATUS (необязательно)
Указывает, отображается ли компоновщик индикатор выполнения, показывающий процент связь завершена.По умолчанию сведения о состоянии не отображаются.:PGINSTRUMENT (необязательно)
Указывает, что компоновщик выдает PGD-файл инструментированного тестирования для подготовки к запуску приложения.Можно использовать /PGD вариант, чтобы указать имя или расположение PGD-файла.Данные, собранные инструментированного выполнения используется для создания оптимизированного образа.Дополнительные сведения см. в разделе Профильная оптимизация.В краткой форме параметр записывается как /LTCG:PGI.
:PGOPTIMIZE (необязательно)
Указывает, что компоновщик использует данные профиля, который создается после выполнения инструментированный двоичный файл для создания оптимизированного образа.Все входные файлы должны быть идентичны файлам, которые были указаны в /LTCG:PGI.Дополнительные сведения см. в разделе Профильная оптимизация.В краткой форме параметр записывается как /LTCG:PGO.:PGUPDATE (необязательно)
Включает список входных файлов для добавления или изменения от заданного в: PGINSTRUMENT фазы.Тем не менее любой новый входных файлов не оптимизирован с помощью профильной оптимизации и измененные части входного файла, которые станут недействительными данные профиля, собранные в ходе этапа инструментирования для кода не оптимизирован с помощью профильной оптимизации.Дополнительные сведения см. в разделе Профильная оптимизация.В краткой форме параметр записывается как /LTCG:PGU.
Параметр/LTCG указывает компоновщику вызов компилятора и выполнение общей оптимизации программы.Также можно выполнить профильную оптимизацию.Дополнительные сведения см. в разделе Профильная оптимизация.
За исключением следующих нельзя добавлять параметры компоновщика / LTCG: PGOPTIMIZE или/LTCG: PGUPDATE запуска, не указанные в/LTCG: PGINSTRUMENT запуска:
Любые параметры компоновщика, указанные в/LTCG: PGINSTRUMENT не нужно указывать/LTCG: PGOPTIMIZE; они применяются.
В остальной части этого раздела обсуждаются/LTCG терминах создания кода времени компоновки.
Параметр /LTCG подразумевается установленным при использовании параметра /GL.
Вызов создания кода времени компоновки при передаче модуля, скомпилированного с помощью /GL или модуля MSIL (см. .NETMODULE-файлы в качестве входных файлов компоновщика).Если не указано явным образом /LTCG при передаче /GL или модулей MSIL компоновщику компоновщика в конечном итоге обнаруживает и перезапускает ссылку с помощью /LTCG.Явно укажите /LTCG при передаче /GL и модулей MSIL компоновщику быстрым можно построить производительности.
/LTCGне является допустимым для использования с /INCREMENTAL.
При /LTCG используется для связи модули, скомпилированные с помощью /Og, /O1, /O2, или /Ox, выполняются следующие оптимизации:
Межмодульное встраивание
Межпроцедурное распределение памяти регистров (только в 64-разрядных операционных системах)
Пользовательское соглашение о вызове (только платформа x86)
Смещение малых регистров TLS (только платформа x86)
Двойное выравнивание стека (только платформа x86)
Разрешение конфликтов обращения к памяти (более точные сведения о конфликтах глобальных переменных и входных параметров)
Примечание |
---|
Компоновщик решает, какие виды оптимизации была скомпилирована с каждой функции и применяет оптимизацию же во время компоновки. |
С помощью /LTCG и /Ogt приводит к оптимизации двойного выравнивания.
Если /LTCG и /Ogs заданы, двойное выравнивание не выполняется.Если большая часть функций приложения компилируются по скорости, с несколько функций, скомпилированные для размера (например, с помощью оптимизировать pragma), компилятор двойное выравнивание функции, которые оптимизированы для размера, если они вызывают функции, требующие двойного выравнивания.
Если компилятор может определить все места вызова функции, компилятор игнорирует явные модификаторы вызовах функции и пытается оптимизировать соглашение о вызове функции:
Передача параметров в регистры
Изменение порядка параметров для выравнивания
Удаление неиспользуемых параметров
Если функция вызывается через указатель на функцию или сделать функция вызывается вне модуля, скомпилированных с помощью /GL, компилятор пытается оптимизировать соглашение о вызове функции.
Примечание |
---|
При использовании /LTCG и переопределить функцию mainCRTStartup, приложения могут иметь непредсказуемое поведение, связанные с пользователем код, который выполняется до инициализации глобальных объектов.Существует три способа для решения этой проблемы: функцию mainCRTStartup, не компилируйте содержащий функцию mainCRTStartup, используя файл /LTCG, или инициализировать глобальные переменные и объекты статически. |
Модули /LTCG и MSIL
Модули, скомпилированные с помощью помощью и /CLR можно использовать в качестве входных данных компоновщика при /LTCG указан.
/LTCGможно принять собственный объект файлов со смешанным машинным и управляемым объектных файлов (скомпилированы с помощью /clr), чисто объект файлов (скомпилированы с помощью /clr:pure) и безопасном объектных файлов (скомпилированы с помощью /clr:safe)
Параметр /LTCG принимает безопасные NETMODULE-модулей NETMODULE, который может быть создан с помощью /clr:safe /LN в Visual C++ и /target:module в любой другой компилятор Visual Studio..Модулей NETMODULE, созданные с помощью**/clr** или /clr:pure не принимаются по /LTCG.
/LTCG:PGI не принимает неуправляемые модули, скомпилированные с помощью /GL и /clr, а также чистые модули (производится с помощью /clr:pure)
Установка данного параметра компилятора в среде разработки Visual Studio
Откройте диалоговое окно проекта Страницы свойств.Дополнительные сведения см. в разделе Изменение параметров проекта.
Выберите папку Свойства конфигурации.
Выберите страницу свойств Общие.
Измените значение свойства Оптимизация всей программы.
Можно также применить /LTCG для конкретных сборок, выбрав построения, Оптимизация с использованием профиля в строке меню или выбрав один из параметров Оптимизация с использованием профиля в контекстном меню проекта.
Установка данного параметра компилятора программным способом
- Дополнительные сведения см. в разделе LinkTimeCodeGeneration.