英特尔C++编译器和GCC的基准测试
我有一个运行CentOS 5的AMD皓龙服务器。我想有一个相当大的基于C++Boost的程序的编译器。我应该选择哪个编译器?
解决方案
我希望这不仅仅是帮助而不是伤害:)
一年多前的某个时候,我做了一次小小的编译器枪战,我快记不住了。
- GCC 4.2(苹果)
- 英特尔10
- GCC 4.2(苹果)+LLVM
我测试了我编写的多个模板密集型音频信号处理程序。
编译时间:到目前为止,英特尔编译器是最慢的编译器--另一篇帖子引用的数据显示,英特尔编译器的速度要慢2倍以上。
与英特尔相比,GCC处理深度模板非常出色。
英特尔编译器生成了巨大的目标文件。
GCC+LLVM生成的二进制代码最小。
生成的代码可能会因程序的构造以及可能使用SIMD的位置而有显著差异。
对于我的编写方式,我发现GCC+LLVM生成的代码最好。对于我在认真对待优化之前编写的程序(就像我写的那样),英特尔通常更好。
英特尔的结果各不相同;它对一些程序的处理要好得多,而对一些程序的处理要差得多。它很好地处理了原始处理,但我认为GCC+llvm是最好的,因为当放在一个更大的(正常)程序的上下文中时……它做得更好。英特尔赢得了开箱即用的巨大数据集的数字处理。
GCC单独生成的代码最慢,尽管它可以通过测量和纳米优化来达到同样的速度。我更倾向于避免这些,因为可以说,随着下一个编译器发行版的发布,风向可能会改变。
我从未在此测试中测量过写得很差的程序(即结果优于流行性能库的发行版)。
最后,这些程序是经过几年编写的,当时使用的是GCC作为主要编译器。
更新:我还启用了Core2Duo的优化/扩展。这些程序足够干净,可以启用严格的别名。
相关文章