C语言 用于优化给定 CPU 架构的 GCC 选项



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

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

警告:答案不正确

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

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

然后阅读有关仍然禁用的标志,根据 gcc 文档可能会影响性能。

您需要

添加一个-march=...选项。...应替换为此处 GCC 的 i386/x86_64 选项中所述的最接近您的 CPU 架构(往往存在细微差异(的任何内容。

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

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

最新更新