/ORDER (размещение функций по порядку)
/ORDER:@filename
Параметры
- filename
Текстовый файл, в котором указывается порядок компоновки функций COMDAT.
Заметки
При использовании параметра /ORDER компоновщик LINK оптимизирует программу, размещая определенные функции COMDAT в образе в указанном порядке.LINK размещает функции в указанном порядке в каждом разделе образа.
Порядок задается в текстовом файле имя файла (файле ответов), в котором перечисляются функции COMDAT в том порядке, в котором их следует компоновать.Каждая строка в файле имя файла содержит имя одной функции COMDAT.Объект содержит функции COMDAT, если он компилировался с использованием параметра /Gy.В именах функций учитывается регистр букв.
Программа LINK использует декорированную форму идентификаторов.Компилятор декорирует идентификатор при создании OBJ-файла.Если декорированную форму идентификатора необходимо указать в параметрах компоновщика, для его получения можно использовать средство DUMPBIN.Дополнительные сведения о декорированных именах см. в разделе Декорированные имена.
Если задано более одного параметра /ORDER, используется последний заданный из них.
Указание порядка позволяет оптимизировать поведение программы при разбивке по страницам за счет настройки файла подкачки, а именно группирования функции с функциями, которые он вызывает.Также можно сгруппировать наиболее часто вызываемые функции.Эти методы позволяют увеличить вероятность того, что вызванная функция расположена в памяти, когда необходимо, и ее не требуется загружать с диска.
Компоновщик вставляет символ подчеркивания (_) перед каждым декорированным именем в файле имя_файла кроме тех случаев, когда имя начинается с вопросительного знака (?) или знака @.Например, если в объектном файле содержится extern "C" int func(int) и int main(void), после выполнения команды DUMPBIN /SYMBOLS отображаются эти декорированные имена:
009 00000000 SECT3 notype () External | _func
00A 00000008 SECT3 notype () External | _main
Но имена, указанные в файле порядка, должны выглядеть как func и main.
Параметр /ORDER отключает инкрементное построение.
Примечание |
---|
LINK не может упорядочивать статические функции, поскольку их имена не являются именами открытых символов.Если используется параметр /ORDER, для каждого статического или необнаруженного символа в файле порядка генерируется предупреждение компоновщика LNK4037. |
Установка данного параметра компоновщика в среде разработки Visual Studio
Откройте диалоговое окно Страницы свойств проекта.Дополнительные сведения см. в разделе Задание свойств проекта C++.
Выберите папку Компоновщик.
Выберите страницу свойств Оптимизация.
Измените свойство Порядок функций.
Установка данного параметра компоновщика программным способом
- Дополнительные сведения см. в разделе FunctionOrder.