/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.