针对网上VC和GCC效率争论,我有想法

到底是VC生成的exe效率高还是gcc的效率高,网上争论不休,每个人都有自己的实验论据,我以素数搜索算法做了个实验,这个算法本身不能说明什么,很简单的逻辑,不过我以不输出结果、输出结果到文件和输出结果到控制台分别实验,发现了一些规律,似乎可以解释网上为什么大家自说自话,没有统一的结论。

纯C编写的快速搜索素数算法,代码比较长,为了加速,还有素数表(2-65521),分别用VC2008和mingw 4.4.0编译
VC用release版O2优化,Mingw用release版O3优化。
搜索小于1000万的素数的结果,共664579个素数
VC:4.383s
Mingw:5.582s
VC胜出,这是IO可以几乎忽略不计的情况。

但是加上文件处理,输出结果到文件(硬盘太慢,我输出到ramdisk)
搜索小于10万的素数:
VC:0.020s
Mingw:0.018s
Mingw略快

搜索小于100万的素数:
VC:0.298s
Mingw:0.313s
这里却变成了VC略快,可能由于上限大了以后,IO开销的比例就下降了,毕竟数字越大,素数比例越低

上限改成1000万:
VC:4.935s
Mingw:5,878s
VC优势更明显了,很明显VC的优势在算法,GCC的优势在IO

为了更好的验证,我们把文件输出改成控制台输出:
小于10万:
VC:0.570s
Mingw:0.425s
Mingw优胜

小于100万:
VC:4.838s
Mingw:3.147s
Mingw优势更明显,说明在控制台IO输出上,Mingw有更大的优势,这里是用的stdio.h,我还测试了c++输出流,Mingw优势更大,VC的iostream效率低是出了名的,就不列数据了,这点大家没有争议

这样就很明显了,之所以大家会得出不同的效率测试结论,机关就在于有些人的测试程序算法多,有些人的测试程序IO多,至于linux用户对VC的不良印象,还得加上Windows(图形内核)用户控制台的低效与linux命令行(文本内核)的高速的因素,同样的硬件,分别在Windows和linux下测试VC和GCC,IO测试的差距就更大了,算法测试应该变化不大,而图形测试则是Windows优势巨大

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值