Параметр /OPT (оптимизация)
Управление оптимизацией, выполняемой во время построения с помощью программы LINK.
/OPT:{REF | NOREF}
/OPT:{ICF[=iterations] | NOICF}
Аргументы
REF | NOREF
Параметры /OPT:REF и /OPT:NOREF определяют соответственно исключение и сохранение функций или данных, ссылки на которые никогда не используются.В программе LINK по умолчанию удаляются все упакованные функции, на которые отсутствуют ссылки.Чтобы включить упакованные функции (COMDAT) в объект, следует выполнить его компиляцию с параметром /Gy.Такой способ оптимизации называется транзитивным исключением функций COMDAT.Чтобы переопределить поведение по умолчанию и сохранить функции COMDAT, на которые отсутствуют ссылки, используйте параметр /OPT:NOREF.Также можно использовать параметр /INCLUDE для переопределения или удаления конкретного символа.
Если задан параметр /DEBUG, по умолчанию используется параметр /OPTNOREF (в противном случае используется параметр REF), определяющий сохранение в образе всех функций.Чтобы переопределить поведение по умолчанию и выполнить оптимизацию отладочного построения, используйте параметр /OPT:REF.При использовании параметра /OPT:REF отключается последовательная компоновка.
В этом случае необходимо явно пометить данные как данные COMDAT с помощью объявления __declspec(selectany).
Если задан параметр /OPT:REF, по умолчанию используется параметр /OPT:ICF.Чтобы использовать параметр /OPT:REF без параметра /OPT:ICF, используйте следующий код:
link /opt:ref /opt:noicf
При включении параметра /OPT:ICF параметр /OPT:REF не включается автоматически.
ICF[= iterations**] | NOICF**
Чтобы выполнить аналогичное свертывание записей COMDAT, используйте параметр /OPT:ICF[=iterations].Избыточные COMDAT можно удалить из выходных данных компоновщика.iterations определяет количество прохода символов для поиска дубликатов.По умолчанию используется значение 2.При большем числе итераций возможно обнаружение дублирующих объектов, не найденных на предыдущих итерациях.Обратите внимание на различия в поведении компоновщика при включенном по умолчанию параметре ICF с явно заданным параметром /OPT:REF и при явно заданном параметре /OPT:REF,ICF.При включенном по умолчанию параметре ICF с заданным параметром /OPT:REF не выполняется свертывание данных, предназначенных только для чтения.К ним относятся данные RDATA, PDATA и XDATA.Если параметр ICF включен по умолчанию с заданным параметром /OPT:REF, при создании образов для Itanium и x64 свертывается меньшее число функций, поскольку в этих модулях присутствует большое число функций с предназначенными только для чтения зависимостями данных (например PDATA и XDATA).Чтобы полностью использовать функциональные возможности ICF, явно задайте параметр /OPT:ICF.
Функции помещаются в записи COMDAT с помощью параметра компилятора /Gy. Данные констант помещаются в записи COMDAT.Сведения об определении данных для свертывания см. в описании параметра selectany.
Если включен параметр REF, параметр ICF по умолчанию включен. При отладочном построении этот параметр необходимо включать явно.При необходимости можно задать параметр NOICF при включенном параметре REF.
Примечание При использовании параметра /OPT:ICF возможно присваивание одного адреса различным функциям или членам данных, доступным только для чтения (константные переменные, компилируемые с параметром /Gy).Таким образом, при использовании параметра /OPT:ICF возможно прерывание программы, в которой требуется использование различающихся адресов функций или доступных только для чтения членов данных.Дополнительные сведения см. в разделе /Gy (включение компоновки на уровне функций).
Заметки
Оптимизация обычно позволяет уменьшить размер образа и повысить производительность программы, однако при этом увеличивается время компоновки.
Чтобы просмотреть список функций, исключаемых при использовании параметра /OPT:REF, а также функций, свертываемых при использовании параметра /OPT:ICF, используйте параметр /VERBOSE.
Установка данного параметра компоновщика в среде разработки Visual Studio
Откройте диалоговое окно Страницы свойств проекта.Дополнительные сведения см. в разделе Задание свойств проекта C++.
Откройте папку Компоновщик.
Выберите страницу свойств Оптимизация.
Измените значение одного из следующих свойств:
Включить сворачивание записей COMDAT
Оптимизировать для Windows 98
Ссылки
Установка данного параметра компоновщика программным способом
- См. описание свойств EnableCOMDATFolding и OptimizeReferences.