您通常将编译器设置为针对最大速度或最小代码大小进行优化吗?或者您手动配置个别优化设置?为什么?
我注意到大多数时候人们倾向于将编译器优化设置保留为默认状态,其中visual c表示最大速度.
我一直认为默认设置更多地与基准测试相关,基准测试往往是完全适合L2缓存的小程序,而不是整体性能最佳,因此我通常将其设置为最小尺寸.
解决方法
作为一名Gentoo用户,我在整个操作系统上尝试了很多优化,并且在
Gentoo forums上有关于它的无休止的讨论.海湾合作委员会的一些好标志可以在
wiki找到.
简而言之,优化尺寸在有限RAM的旧Pentium3笔记本电脑上效果最佳,但在我的主机台式机上使用Core2Duo,-O2可以获得更好的效果.
如果您对最优化的x86(32位)特定标志感兴趣,还有一个small script.
如果您使用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)
(注意它发现-Os在这个Opteron系统上是最慢的.)