/Og (Виды глобальной оптимизации)
Обновлен: Ноябрь 2007
Предоставляет виды локальной и глобальной оптимизации, автоматическое выделение регистров и оптимизацию цикла. Устаревшее свойство.
/Og
Заметки
Доступны следующие виды оптимизации.
Локальное и глобальное исключение общей части выражения
При этом виде оптимизации значение общей части выражения рассчитывается однократно. В следующем примере, если значения частей выражения b и c не изменяются для трех выражений, компилятор может назначить вычисление b + c во временную переменную и заменить переменную для b + c:
a = b + c; d = b + c; e = b + c;
При локальной оптимизации общей части выражения компилятор проверят короткие разделы кода на наличие общих частей выражения. При глобальной оптимизации общей части выражения компилятор выполняет поиск общих частей выражения в целых функциях.
Автоматическое выделение регистров
Этот вид оптимизации позволяет компилятору хранить часто используемые переменные и части выражения в регистрах; ключевое слово register игнорируется.
Оптимизация цикла
При этом виде оптимизации неизменяемые части выражения удаляются из тела цикла. Оптимальный цикл включает только те выражения, значения которых изменяются при каждом выполнении цикла. В следующем примере выражение x + y в теле цикла не меняется:
i = -100; while( i < 0 ) { i += x + y; }
После оптимизации вычисление значения для выражения x + y выполняется однократно, а не при каждом выполнении цикла:
i = -100; t = x + y; while( i < 0 ) { i += t; }
Оптимизация цикла является значительно более эффективной, если компилятор может предположить отсутствие псевдонимов, что определяется атрибутами __restrict, noalias или restrict.
Примечание. Можно разрешать или запрещать глобальную оптимизации для каждой функции, используя директиву pragma optimize с параметром g.
/Og также включает оптимизацию именованных возвращаемых значений, при которой для стековых возвращаемых значений не используются конструкторы копирования и деструкторы. Дополнительные сведения см. в разделе /O1, /O2 (минимизировать размер, максимизировать скорость).
Связанные сведения см. в разделах Создание встроенных функций (/Oi) и Полная оптимизация (/Ox).
/Og не рекомендуется использовать в Visual C++ 2005; используйте /O1 или /O2. Дополнительные сведения см. в разделе Нерекомендуемые параметры компилятора в Visual C++ 2005.
Установка параметра компилятора в среде разработки Visual Studio
Откройте диалоговое окно Страницы свойств проекта. Дополнительные сведения см. в разделе Открытие свойств страниц проекта.
Откройте папку C/C++.
Выберите страницу свойств Командная строка.
Введите параметр компилятора в поле Дополнительные параметры.
Установка параметра компилятора программным способом
- См. раздел AdditionalOptions.