Поделиться через


/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

  1. Откройте диалоговое окно Страницы свойств проекта. Подробнее см. в статье Настройка компилятора C++ и свойства сборки в Visual Studio.

  2. Перейдите на страницу свойств Свойства конфигурации>C/C++>Командная строка.

  3. Введите параметр компилятора в поле "Дополнительные параметры ".

Установка данного параметра компилятора программным способом

См. также

Синтаксис командной строки компилятора MSVC