【发布时间】:2010-06-03 09:29:49
【问题描述】:
我在 C 语言数学软件开发中使用标准的 gcc 编译器。我对编译器或编译器选项了解不多,我只是想知道,是否可以使用另一个编译器或选择更好的选项来制作更快的可执行文件?默认的 Makefile 设置选项 -ffast-math 和 -O3 我认为它们都会对整体计算时间产生一些影响。我的软件非常广泛地使用内存,所以我想一些与内存管理相关的选项可能会奏效?
有什么想法吗?
【问题讨论】:
-
您确定性能可能是一个问题,还是这是一个理论问题?
-
我做蒙特卡洛模拟,所以性能是主要问题。如果我可以使程序更快(通过更智能的编程或更好的编译器设置),那么在同一时间段内将获得更准确的结果。有时,当我真的需要低不确定性时,我们集群上的并行计算可能需要数周时间。但即使它们需要几个小时,早点得到它们仍然很好。
-
除了 C 编译器之外,您还可以考虑更改其他一些内容。特别是对于数值应用程序,请考虑在指针上使用 C99
restrict限定符 - 这可以允许编译器更积极地优化(即消除内部循环的冗余负载)。如果您严重依赖math.h中的函数,还可以考虑获得更快的标准数学库。
标签: c performance gcc compiler-construction