我正在研究Nehalam / westmere英特尔微架构CPU。我想为此架构优化我的代码。 GCC是否有专门的编译标志或C函数可以帮助我提高代码的运行时性能?
我已经在使用-o3。
Language of the Code - C
Platform - Linux
GCC Version - 4.4.6 20110731 (Red Hat 4.4.6-3) (GCC)
在我的代码中,我有一些浮点比较,它们完成了一百多万次。
请假设代码已经过最佳优化。
答案 0 :(得分:17)
首先,如果您真的想从像这样的新处理器上获得优化,那么您应该安装最新版本的编译器。 4.4几年前出现了,即使它似乎仍然存在,我怀疑新的优化代码是否已经向后推送。 (当前版本为4.7)
Gcc有一个catch-all优化标志,通常应该生成针对编译体系结构优化的代码:-march=native
。与-O3
一起,这应该就是您所需要的一切。
(对于本网站的未来问题,请使用完整的英语语法和标点符号。)
答案 1 :(得分:15)
警告:答案不正确。
您可以自己实际分析所有已禁用和已启用的优化。在您的计算机上运行:
gcc -O3 -Q --help=optimizers | grep disabled
然后阅读有关仍然禁用的标志,并且可以根据the gcc documentation影响性能。
答案 2 :(得分:6)
您需要添加-march=...
选项。 ...
应该替换为最接近您的CPU架构的任何内容(通常会有微小的差异)in the i386/x86_64 options for GCC here。
我会使用core2
,因为corei7
(您想要的那个)仅在GCC 4.6及更高版本中可用。请参阅arch list for GCC 4.6 here。
答案 3 :(得分:0)
如果你真的想要使用一个不太支持corei7的gcc,你可以使用-mtune = barcelona