8

我正在研究 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)

在我的代码中,我进行了一些浮点比较,它们完成了超过一百万次。

请假设代码已经进行了最佳优化。

4

4 回答 4

18

首先,如果你真的想从像这样的新处理器上的优化中获益,你应该安装最新版本的编译器。4.4 几年前出现了,即使它看起来仍然保持不变,我怀疑更新的优化代码是否向后移植。(当前版本为 4.7)

Gcc 有一个包罗万象的优化标志,通常应该生成针对编译架构优化的代码:-march=native. 连同-O3这应该是你所需要的一切。

(对于本网站的未来问题,请使用完整的英语语法和标点符号。)

于 2012-05-18T05:59:25.807 回答
16

警告:答案不正确

您实际上可以自己分析所有禁用和启用的优化。在您的计算机上运行:

gcc -O3 -Q --help=optimizers | grep disabled

然后阅读仍然被禁用的标志,并且可以根据 gcc 文档影响性能。

于 2012-05-18T05:03:47.227 回答
7

您需要添加一个-march=...选项。...应该用GCC 的 i386/x86_64 选项中描述的最接近您的 CPU 架构(往往会有细微的差异)替换。

我会使用core2,因为corei7(您想要的)仅在 GCC 4.6 及更高版本中可用。在此处查看GCC 4.6 的架构列表

于 2012-05-18T09:26:26.230 回答
0

如果你真的想使用一个太旧以至于它不支持 corei7 的 gcc,你可以使用 -mtune=barcelona

于 2016-02-10T00:12:08.287 回答