Пример оптимизации параметров MSVC #pragma - PullRequest
0 голосов
/ 26 февраля 2019

Может кто-нибудь связать меня с примером того, как использовать #pragma optimize ("some_values_for_02", on), чтобы имитировать глобальную оптимизацию 02 для нескольких избранных функций.

Я посмотрел вокруг вДокументы MSDN, а также на SO, это лучшее, что я когда-либо видел: В VC ++, что является #pragma эквивалентом опции компилятора / O2 (оптимизация по скорости)

Ссылка на этот ответхотя больше не активен.

Как выглядит синтаксис?Нужно ли использовать несколько #pragmas для имитации оптимизации 02?В связанном ответе упоминается попытка добавить #pragma intrinsic и #pragma auto_inline

Если вы можете указать мне источник, который я могу прочитать, в качестве примера, который тоже может сработать.

Спасибо

1 Ответ

0 голосов
/ 26 февраля 2019

/O2 == /Og /Oi /Ot /Oy /Ob2 /GF /Gy.Шаг за шагом:

  • /Og: Глобальные оптимизации :

    / Og устарела.Эти оптимизации теперь обычно включены по умолчанию

    ~> пофиг.В любом случае:

    Вы можете включить или отключить глобальную оптимизацию для каждой функции, используя прагму оптимизации, вместе с опцией g.

    #pragma optimize("g", on)
    

  • /Oi: свойственный

    #pragma intrinsic(_disable, _outp, fabs, strcmp, _enable, _outpw, labs, strcpy,
                      _inp, _rotl, memcmp, strlen, _inpw, _rotr, memcpy, _lrotl,
                      _strset, memset, _lrotr, abs, strcat)
    

  • /Ot: оптимизация

    #pragma optimize("t", on)
    

  • /Oy: оптимизировать

    #pragma optimize("y", on)
    

  • /Ob2 Расширение встроенной функции :

    Компилятор рассматривает параметры встроенного расширения и ключевые слова как предложения.Нет никаких гарантий, что какая-либо функция будет развернута в строке.Вы можете отключить встроенные расширения, но не можете заставить компилятор встроить определенную функцию даже при использовании ключевого слова __forceinline.

    ~> Не важно.

  • /GF Не знаю.

  • /Gy Не знаю.

Конечный результат:

#pragma intrinsic(_disable, _outp, fabs, strcmp, _enable, _outpw, labs, strcpy,
                  _inp, _rotl, memcmp, strlen, _inpw, _rotr, memcpy, _lrotl,
                  _strset, memset, _lrotr, abs, strcat)
#pragma optimize("gty", on)

Еще одна вещь: почему ??

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...