c – gcc选项以最快的代码

我正在为Unix版本分发一个带有makefile的C程序,我想知道我应该使用什么编译器选项来获得最快的代码(它属于可以使用它们可以获得的所有计算能力的程序类别并且仍然回来更多),因为我不提前知道用户将拥有什么硬件,操作系统或gcc版本,而且我想要首先确定它至少在每个主要的Unix上都能正常工作操作系统。

到目前为止,我有g -O3 -Wno-write-strings,还有其他选项我应该添加吗?在Windows上,Microsoft编译器具有诸如快速调用约定和值得使用的链接时间代码之类的选项,gcc有什么等同物?

(我假设它将在64位平台上默认为64位,如果不是这样,请更正我。)

不知道你的程序的任何细节,很难说。 O3涵盖了大部分优化。剩下的选项“来自一个代价”。如果您可以容忍一些随机舍入,并且您的代码不依赖于IEEE浮点标准,那么您可以尝试-Ofast。这不符合标准合规性,可以为您提供更快的代码。

其余的优化标志只能提高某些程序的性能,但是甚至可能对其他程序造成不利影响。查看gcc documentation on optimisation flags中的可用标志并对其进行基准测试。

另一个选项是启用C99(-std = c99)和内联适当的功能。这是一个艺术,你不应该嵌入一切,但有一点工作,你可以让你的代码更快(尽管有一个更大的可执行文件的代价)。

如果速度真的是一个问题,我建议回到微软的编译器,或尝试英特尔。我来了解一些gcc编译代码的速度有多慢,尤其是涉及到math.h.

编辑:哦,等等,你说C?然后忽略我的C99段落,你可以内联已经:)

http://stackoverflow.com/questions/3005564/gcc-options-for-fastest-code

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:c – gcc选项以最快的代码