| 查看: 2385 | 回复: 18 | |||
| 【奖励】 本帖被评价4次,作者波不动增加金币 3 个 | |||
| 当前主题已经存档。 | |||
[资源]
【原创】简单测评Win32下各种C/C++常用编译器数值计算性能
|
|||
|
一、测试的编译器的有: Microsoft VC++6.0编译器,cl.exe版本12.0.8168.0。 Microsoft VC++2008编译器,cl.exe版本15.0.30792.1。 Intel C++9.0编译器,icl.exe版本未知。 GUN Mingw32 G++(GCC)编译器,Mingw版本5.1.6。 Borland C++ Builder 6编译器,bcc32.exe版本5.6.4.0。 二、测试环境和参数: CPU:AMD普通双核处理器,主要关注相对性能的比较。 开发环境:Code::Blocks svn Build,对同一个程序分别对手工替换设置各种编译器进行编译。编译为Release版本的程序,参数上,全部选择为普通的O2(速度优化),其他一律不选,比如Intel专门针对自己处理器的优化等等都未选。 三、测试项目: 一个声波波动方程正演程序,数据量较大,计算中有开根号,开平方运算,同样测试计算速度。 四、测试结果: 编译器名称 计算时间 Microsoft VC++6.0编译器 4.250 s Microsoft VC++2008编译器 2.671 s Intel C++9.0编译器 1.798 s GUN Mingw32 G++(GCC)编译器 8.265 s Borland C++ Builder 6编译器 4.156 s 五、测试总结: 结果很显然,从计算速度上来说,Intel C++9.0编译器占据了较大的优势,在没有专门针对处理器优化已经本人AMD双核CPU上的测试,还能达到仅仅1.798 s的计算速度,确实非常令人咋舌,如果再进一步优化性能还会有更进一步的提高。另外Microsoft VC++2008编译后的执行效率也非常之高,仅仅比Intel编译器多了1秒的时间。至于VC++6.0和BCB6.0这两位老将确实已经是风华不再了。计算时间比前者多出了两三倍之多。。。而GUN Mingw32G++的的效率是最差的,这是让人觉得很奇怪的事情,而且不管我怎么设置,都进不了8秒的计算时间,实在是搞不懂。说是说Win32下也可以用GCC了,但是如此差的性能,实在是感觉不用也罢。或者哪位高手能指出哪里出问题了? 综合下来,我个人还是推荐VC++2008编译器(除了以上优势还带有更多完整的警告调试功能),第二推荐Intel C++ 9.0(因为现在已经出到10 11 12了都,缺点是9.0以后的破解比较不容易拿到)。 最后声明,此项测试乃我本人的非专业简单测试,其中肯定有不少考虑不周或者不合理的地方,欢迎各位指出! [ Last edited by 波不动 on 2009-12-7 at 00:25 ] |
» 收录本帖的淘帖专辑推荐
编程 |
» 猜你喜欢
之前让一硕士生水了7个发明专利,现在这7个获批发明专利的维护费可从哪儿支出哈?
已经有6人回复
博士申请都是内定的吗?
已经有7人回复
读博
已经有5人回复
博士读完未来一定会好吗
已经有29人回复
投稿精细化工
已经有4人回复
高职单位投计算机相关的北核或SCI四区期刊推荐,求支招!
已经有4人回复
导师想让我从独立一作变成了共一第一
已经有9人回复
心脉受损
已经有5人回复
Springer期刊投稿求助
已经有4人回复
小论文投稿
已经有3人回复
nono2009
超级版主 (文学泰斗)
-

专家经验: +21105 - 应助: 28684 (院士)
- 贵宾: 513.911
- 金币: 2555180
- 帖子: 1602251
- 在线: 65200.9小时
- 虫号: 827383
2楼2009-12-06 22:55:45
3楼2009-12-06 23:34:39
4楼2009-12-06 23:51:07
5楼2009-12-07 00:05:25
6楼2009-12-07 00:11:00
7楼2009-12-10 00:10:38
★ ★ ★ ★
senlia(金币+2,VIP+0):欢迎参加讨论 12-14 18:15
波不动(金币+2,VIP+0):抛砖引玉啊,感谢您的评论,长见识了,希望你能常来呢,至于12是我搞错了! 12-14 19:46
senlia(金币+2,VIP+0):欢迎参加讨论 12-14 18:15
波不动(金币+2,VIP+0):抛砖引玉啊,感谢您的评论,长见识了,希望你能常来呢,至于12是我搞错了! 12-14 19:46
|
首先,GCC慢是很正常的事。如果你已经O2,甚至O3过了,还是慢的话,那就是因为glibc这个破数值库的问题了。这个库是公认的数值计算超慢的库。所以不要用。GCC的优势在于:1、开源,不要钱,无版权问题。2、可跨平台编译,且支持的平台很多。目前还没有找到好的C/C++的数值库。Intel的MKL(Math Kernel Library)库是非常捧的,可惜在win下是要钱的。如果你能把icc9里的MKL库用GCC连接一下,可能会快不少。 另:Intel C++ Compiler现在不是才11.1吗?我刚下载了一个啊。在Linux下有非商业的licence,在win下没有。已经不用VS很多年了,又大,又不爽。改拜VIM教了。 |
8楼2009-12-14 14:06:45
9楼2009-12-15 03:34:26
10楼2009-12-18 15:33:06
11楼2009-12-18 19:40:30
12楼2009-12-18 22:09:22
13楼2009-12-19 21:36:42
★ ★ ★ ★ ★
波不动(金币+5,VIP+0):感谢专家的实验结果!! 12-21 19:14
波不动(金币+5,VIP+0):感谢专家的实验结果!! 12-21 19:14
|
唉,又犯罪了,没有专心复习我的群论,开个小差做了一下实验。结果发出来吧。然后我再去看群论了。 1、把积分函数变成x*x,无优化,直接编译的: gcc 2.976s icc 0.249s 2、积分函数换回fabs(sin(x)),无优化: gcc 10.402s icc 2.044s 3、积分函数为x*x,无优化,去掉所有的printf。 gcc 2.968s icc 0.001s 结果讨论: 一、glibc虽然很低效,但并不是影响gcc速度的主要因素。因为用sin后,icc同样运算时间提高了近10倍。而gcc只提高了不到4倍。 二、gcc有一个稳定的输入输出系统,而且和linux配合得很好,在除去所有输出函数后,并没有影响运算时间。同时提醒我们用icc编程时,尽量keep silence。不需要输出的时候就不要输出。 三、gcc的速度问题,可能源于它的内部架构,这一点有待到gcc的maillist里问一下。不过,如果你是要工作而不是学习C/C++语言的话,最好选用Inter C++ Compiler或PGI的Compiler。版权问题我就不多说了(这两天因为射手和QQ影音的版权问题,心里很不爽)。 结论是GCC不适合做大规模的数值计算。 |
14楼2009-12-21 16:05:04
15楼2009-12-21 19:16:46
16楼2009-12-21 20:49:32
17楼2009-12-24 11:43:59
18楼2009-12-24 20:32:24
19楼2009-12-29 11:09:52













回复此楼

