首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用另一个编译器更快地编写代码

问使用另一个编译器更快地编写代码
EN

Stack Overflow用户
提问于 2010-06-03 17:29:49
回答 6查看 575关注 0票数 3

我用C语言在数学软件开发中使用标准的gcc编译器。我不太了解编译器或编译器选项,我只是想知道,有没有可能使用另一个编译器或选择更好的选项来制作更快的可执行文件?默认的Makefile设置选项-ffast-math和-O3,我认为这两个选项对整体计算时间都有一些影响。我的软件使用内存非常广泛,所以我想一些与内存管理相关的选项可以解决这个问题?

有什么想法吗?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-06-03 18:23:15

在尝试不同的编译器或随机的、任意的微优化之前,你真的需要一个像样的分析器和profile你的代码,以找出确切的性能瓶颈是什么。实际情况可能与你想象的截然不同。一旦你有了一个概要文件,你就可以开始考虑什么可能是有用的优化。例如,如果你受到内存带宽的限制,改变编译器不会对你有任何帮助。

票数 9
EN

Stack Overflow用户

发布于 2010-06-03 18:15:34

这里有一些关于gcc性能的提示:用-Os,-O2和-O3做基准测试。有时-O2会更快,因为它使得代码更短。既然您说您使用了大量内存,那么也可以尝试使用-Os并进行测量。

还要检查客户端计算机上的-march=native选项(如果您正在为具有类似处理器的计算机设置可执行文件,则认为使用该选项是安全的)。有时,它会对性能产生相当大的影响。如果你需要列出gcc使用native的选项列表,下面是如何做的:

创建一个名为test.c的小C程序,然后

代码语言:javascript
复制
$ touch test.c
$ gcc -march=native -fverbose-asm -S test.c
$ cat test.s

代码转到Gentoo论坛用户的信用。它应该会打印出gcc使用的所有优化的列表。请注意,如果你使用的是i7,gcc 4.5会将其检测为Atom,所以你需要手动设置-march和-mtune。

另外,请阅读本文档,它会对您有所帮助(不过,根据我在Gentoo上的经验,-march=native运行得更好) http://gcc.gnu.org/onlinedocs/gcc/i386-and-x86_002d64-Options.html

您可以尝试在4.4年末和4.5早期版本中使用新选项,如-flto和- early program。这些应该有助于提高性能,但在试验它们时,我的系统不稳定。无论如何,也请阅读本文档,它将帮助您理解GCC的一些优化选项http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html

票数 5
EN

Stack Overflow用户

发布于 2010-06-03 17:35:47

如果您在x86上运行Linux,那么通常情况下,Intel或PGI编译器将使您的可执行文件的执行速度大大提高。

缺点是有更多的旋钮需要调整,而且它们有很高的价格标签!

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2964667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档