【问题标题】:MSVC #pragma optimize parameter exampleMSVC #pragma 优化参数示例
【发布时间】:2019-02-26 06:18:24
【问题描述】:

谁能给我链接一个示例,说明如何使用#pragma optimize("some_values_for_02", on) 来模拟选定几个函数的全局 02 优化。

我查看了 msdn 文档和 SO,这是迄今为止我见过的最好的: In VC++ what is the #pragma equivalent of /O2 compiler option (optimize for speed)

但该答案的链接不再有效。

语法是什么样的?我是否需要使用多个#pragmas 来模拟 02 优化?链接的答案提到尝试添加#pragma intrinsic#pragma auto_inline

如果你能指出我可以阅读的野外来源,我可以作为一个例子来阅读。

谢谢

【问题讨论】:

  • 我更新了您所链接问题的答案中的链接。

标签: c optimization visual-c++


【解决方案1】:

/O2 == /Og /Oi /Ot /Oy /Ob2 /GF /Gy。一步一步:

  • /Og:Global Optimizations:

    /Og 已弃用。这些优化现在通常默认启用

    ~> 不在乎。无论如何:

    您可以使用 optimize pragma 和 g 选项逐个函数启用或禁用全局优化。

    #pragma optimize("g", on)
    


  • /Oi:intrinsic

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


  • /Ot:optimize

    #pragma optimize("t", on)
    


  • /Oy:optimize

    #pragma optimize("y", on)
    


  • /Ob2Inline Function Expansion:

    编译器将内联扩展选项和关键字视为建议。不能保证任何函数都会内联扩展。您可以禁用内联扩展,但不能强制编译器内联特定函数,即使使用 __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)

最后一件事:为什么??

【讨论】:

  • 我不想用几十年前的遗留代码影响整个项目,但我在一个单独的线程上添加了一个 ISR,每分钟运行数百万次,我想最小化指令集或更重要的是执行时间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多