Fer*_*cio 6 c c++ optimization compiler-optimization
您通常将编译器设置为针对最大速度或最小代码大小进行优化吗?或者您手动配置个别优化设置?为什么?
我注意到大多数时候人们倾向于将编译器优化设置保留为默认状态,而使用visual c ++意味着最大速度.我一直认为默认设置更多地与基准测试相关,基准测试往往是完全适合L2缓存的小程序,而不是整体性能最佳,因此我通常将其设置为最小尺寸.
作为一名Gentoo用户,我在整个操作系统上尝试了很多优化,并且在Gentoo论坛上就此进行了无休止的讨论.GCC的一些好标志可以在维基中找到.
简而言之,优化尺寸在有限RAM的旧Pentium3笔记本电脑上效果最佳,但在我的主机台式机上使用Core2Duo,-O2可以获得更好的效果.
如果您对最优化的x86(32位)特定标志感兴趣,还有一个小脚本.
如果您使用gcc并且真的想要优化特定应用程序,请尝试ACOVEA.它运行一组基准测试,然后使用编译标志的所有可能组合重新编译它们.在网站上有一个使用霍夫曼编码的例子(越低越好):
A relative graph of fitnesses:
Acovea Best-of-the-Best: ************************************** (2.55366)
Acovea Common Options: ******************************************* (2.86788)
-O1: ********************************************** (3.0752)
-O2: *********************************************** (3.12343)
-O3: *********************************************** (3.1277)
-O3 -ffast-math: ************************************************** (3.31539)
-Os: ************************************************* (3.30573)
Run Code Online (Sandbox Code Playgroud)
(注意它发现-Os在这个Opteron系统上是最慢的.)