/Og
(Глобальные оптимизации)
Устарело. Обеспечивает локальную и глобальную оптимизацию, автоматическое выделение регистров и оптимизацию цикла. Вместо этого рекомендуется использовать /O1
(свернутый размер) или /O2
(максимальное значение скорости).
Синтаксис
/Og
Замечания
/Og
не рекомендуется к использованию. Эти оптимизации теперь включены по умолчанию при включении любой оптимизации. Дополнительные сведения об оптимизации см. в статье /O2
/O1
(Свертывание размера, максимальная скорость) или /Ox
(включение оптимизации большинства скоростей).
В разделе /Og
Доступны следующие оптимизации:
Устранение локальных и глобальных общих вложенных выражений
В этой оптимизации значение общего подтекстов вычисляется один раз. В следующем примере, если значения
b
иc
не изменяются между тремя выражениями, компилятор может назначить вычислениеb + c
временной переменной и использовать эту переменную дляb + c
:a = b + c; d = b + c; e = b + c;
Для локальной общей оптимизации вложенных выражений компилятор проверяет короткие разделы кода для распространенных вложенных выражений. Для глобальной общей оптимизации вложенных выражений компилятор выполняет поиск всех функций для общих вложенных выражений.
Автоматическое выделение регистра
Эта оптимизация позволяет компилятору хранить часто используемые переменные и вложенные выражения в регистрах. Ключевое
register
слово игнорируется по умолчанию и вызывает диагностику под/std:c++17
или более поздней версией.Оптимизация цикла
Эта оптимизация удаляет инвариантные вложенные выражения из текста цикла. Оптимальный цикл содержит только выражения, значения которых изменяются при каждом выполнении цикла. В следующем примере выражение
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
.Примечание.
Вы можете включить или отключить глобальную оптимизацию на основе функции с помощью
optimize
pragma вместе с параметромg
.
Дополнительные сведения см. в разделе /Oi
(Создание встроенных функций) и /Ox
(включение большинства оптимизаций скорости).
Установка данного параметра компилятора в среде разработки Visual Studio
Откройте диалоговое окно Страницы свойств проекта. Подробнее см. в статье Настройка компилятора C++ и свойства сборки в Visual Studio.
Перейдите на страницу свойств Свойства конфигурации>C/C++>Командная строка.
Введите параметр компилятора в поле "Дополнительные параметры ".
Установка данного параметра компилятора программным способом
- См. раздел AdditionalOptions.