Benchmarks for Intel C++ compiler and GCC(英特尔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的优化/扩展。这些程序足够干净,可以启用严格的别名。
这篇关于英特尔C++编译器和GCC的基准测试的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:英特尔C++编译器和GCC的基准测试
基础教程推荐
- 我应该对 C++ 中的成员变量和函数参数使用相同的名称吗? 2021-01-01
- 非静态 const 成员,不能使用默认赋值运算符 2022-10-09
- 为什么 typeid.name() 使用 GCC 返回奇怪的字符以及如 2022-09-16
- 如果我为无符号变量分配负值会发生什么? 2022-01-01
- GDB 显示调用堆栈上函数地址的当前编译二进制文 2022-09-05
- 为什么 RegOpenKeyEx() 在 Vista 64 位上返回错误代码 2021-01-01
- 初始化列表*参数*评估顺序 2021-01-01
- 为什么派生模板类不能访问基模板类的标识符? 2021-01-01
- CString 到 char* 2021-01-01
- 通过引用传递 C++ 迭代器有什么问题? 2022-01-01
