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


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

    1yk3ydd7.alert_note(ru-ru,VS.90).gifПримечание.

    Можно разрешать или запрещать глобальную оптимизации для каждой функции, используя директиву pragma optimize с параметром g.

/Og также включает оптимизацию именованных возвращаемых значений, при которой для стековых возвращаемых значений не используются конструкторы копирования и деструкторы. Дополнительные сведения см. в разделе /O1, /O2 (минимизировать размер, максимизировать скорость).

Связанные сведения см. в разделах Создание встроенных функций (/Oi) и Полная оптимизация (/Ox).

/Og не рекомендуется использовать в Visual C++ 2005; используйте /O1 или /O2. Дополнительные сведения см. в разделе Нерекомендуемые параметры компилятора в Visual C++ 2005.

Установка параметра компилятора в среде разработки Visual Studio

  1. Откройте диалоговое окно Страницы свойств проекта. Дополнительные сведения см. в разделе Открытие свойств страниц проекта.

  2. Откройте папку C/C++.

  3. Выберите страницу свойств Командная строка.

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

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

См. также

Ссылки

Параметры /O (оптимизация кода)

Параметры компилятора

Настройка параметров компилятора