我听说gcc不应该用-O3选项编译。这是真的吗?如果是这样,那么避免-O3的原因是什么?
发布于 2014-08-08 09:28:10
答案是:这取决于您的代码。
基本的经验法则如下:
您可以在GCC文献中阅读更多细节。如果您真的想对代码进行超级优化,那么您可以尝试启用更多的选项,即使是在-O3中也没有使用;例如,-floop-*选项。
特别是速度空间优化的问题是,它们会对内存缓存的有效性产生负面影响。代码可能对CPU更好,但如果对内存没有更好的效果,那么您就会失败。由于这个原因,如果您的程序没有一个热点,它花费了所有的时间,那么您可能会发现它的速度总体上是慢的。
现实世界的优化是一门不精确的科学,原因有三:
基本上,答案总是:如果性能很重要,尝试所有优化级别,度量您的代码的性能,并为您的选择最好的。再做一次,每一件大的改变。
如果性能不重要,-O2是您的选择。
https://stackoverflow.com/questions/25198018
复制相似问题