我希望这有助于多于伤害:)
一年多前的某个时候,我进行了一次编译器大战,现在我已经记不清了。
- GCC 4.2(苹果)
- Intel 10
- GCC 4.2(苹果)+ LLVM
我测试了我编写的多个模板重音频信号处理程序。
编译时间:英特尔编译器是迄今为止最慢的编译器 - 正如另一篇文章所引用的那样,“慢了 2 倍多”。
与 Intel 相比,GCC 处理深度模板的效果非常好。
Intel编译器生成的huge对象文件。
GCC+LLVM 产生最小的二进制文件。
由于程序的构造以及可以使用 SIMD 的位置,生成的代码可能会存在显着差异。
对于我的编写方式,我发现 GCC + LLVM 生成了最好的代码。对于我在认真对待优化之前编写的程序(如我所写),英特尔通常更好。
英特尔的结果各不相同;它对某些程序的处理要好得多,而对某些程序的处理要差得多。它很好地处理了原始处理,但我给了 GCC+LLVM 蛋糕,因为当放入更大(正常)程序的上下文中时......它做得更好。
英特尔凭借开箱即用、对海量数据集进行数字处理而获胜。
GCC 单独生成的代码最慢,尽管它可以通过测量和纳米优化来达到同样的速度。我更愿意避免这些,因为可以这么说,风向可能会随着下一个编译器版本而改变。
我从未在此测试中测量过编写不佳的程序(即结果优于流行性能库的分布)。
最后,这些程序是用几年时间编写的,当时使用 GCC 作为主要编译器。
更新:我还启用了 Core2Duo 的优化/扩展。这些程序足够干净,可以启用严格的别名。