主题:为什么vs2010编译出来的exe执行文件运行速度慢
爱上你是错
[专家分:0] 发布于 2011-09-16 10:40:00
我用vc6.0编译一个hellow world!,编好的exe启动到结速,几乎是瞬间完成,,而同样的代码,在vs2010编译出来的exe,从打开exe到显示窗口,要2秒左右才完成.请高手指教一下,是不是有哪里设置不对呀.为什么vs.2010编出来的exe启动速度这么慢呢?
注意,是编译后的exe,在同一台电脑上,并且把编译环境关闭了.只是两个exe放在那,对比启动速度.
vc6.0编出来的有40k, vs2010编出来的只有8k,同样的只是一句 cout<<"hellow world"<<endl;
虽然vs2010编出来只有8k,可是双击到运行,需要2秒左右,而vc6.0编出来的40k,双击运行,瞬间完成.
两者相较,相差不是一点点.启动速度测试.为什么8k的运行反而会更慢?而40k的运行反而更快?
最后更新于:2011-09-17 15:44:00
回复列表 (共10个回复)
沙发
cgl_lgs [专家分:21040] 发布于 2011-09-16 11:01:00
如果是调试执行,那根本没有可比性——因为开发环境2010比6.0大了不是一星半点儿。
如果是编译后直接双击运行,那也情有可原(但不可能差太离谱),主要是2010编译出来的程序大了,加载速度自然会慢。
板凳
Chipset [专家分:16190] 发布于 2011-09-16 16:15:00
你们都走在世界的前列啊,俺还停留在VC++2005啊,差了两代。
VC++6.0的语法检查很垃圾,所以编译速度快,但是以什么为代价你清楚...,微软的东西越做越大,捆绑一堆没用的垃圾,从VC++2003开始就捆绑.net框架,那叫一个臃肿啊。如果你用MFC和COM那么不得不用VS,所以抱怨也没有用。
我不用MFC也不用COM,但是还是偶尔用VS,因为周围别的人都在用。我主要用gcc
3 楼
cgl_lgs [专家分:21040] 发布于 2011-09-17 13:11:00
呵呵,我主要用C++Builder及Fortran:)VS也用的比较少:)
4 楼
爱上你是错 [专家分:0] 发布于 2011-09-17 15:40:00
不对呀,是编译后的exe,vs2010编译后,只有8k,而vc6.0编译后有40k,可是vc6.0编出来的40k运行飞快,而vs2010编出来的8k的hellow world,双击启动要两秒钟后才出现.
按说vc6.0编出来体积40k应该更慢呀,是编译后的exe,不是在编译环境下测试的,都关了编译环境后运行对比.同样的代码,同样的dos窗口.速度相差太多了,vs2010编出来的就慢了两秒钟,只是一个hellow world的dos窗口.居然相差这么多
5 楼
Chipset [专家分:16190] 发布于 2011-09-17 19:32:00
理论上不应该这样。估计优化有问题,要么你用Express版本的VS2010?
6 楼
爱上你是错 [专家分:0] 发布于 2011-09-18 07:50:00
我用的是旗舰版vs2010.编出来的exe就是启动很慢.放在另一台电脑上测试也是如此,
7 楼
Chipset [专家分:16190] 发布于 2011-09-18 10:40:00
运行的Debug版还是Release版?都用最高级优化/Ox再试试,如果还像你说的那样就是VS2010的问题了
8 楼
爱上你是错 [专家分:0] 发布于 2011-09-18 12:02:00
[quote]运行的Debug版还是Release版?都用最高级优化/Ox再试试,如果还像你说的那样就是VS2010的问题了[/quote]
你好,我发现如下情况,我又下载了vs2005,编同样的hellow world
三种编译器都是release编出来的exe.
放在同一台电脑上,运行这三个exe,vc6.0编出来的是40k,启动到结束 ,瞬间完成.几乎看不到.因为dos闪一下就没了.不管是什么情况下,都 是如此.第一次,第二次都一样,
vs2005编出来的,启动时间,第一次启动等待1秒左右,我凭感觉的.然后一闪而过.没了.
第二次启动到结束,和vc6.0的就分不出来的,都是舜间完成.因为内存里面有了数据,所以启动快了.
vs2010编出来的exe第一次启动要2秒左右,第二次就快了.但是比起vc6.0编译的还是差很多.
三种exe同样的代码,同一台电脑,第一次启动这个exe,vc6.0瞬间完成,vs2005等待1秒,
vs2010最慢.
我所指的是编译出来的exe,是release编出来的.
9 楼
Chipset [专家分:16190] 发布于 2011-09-18 22:51:00
至于编译文件大小无所谓,在于编译选项,6.0,8.0,10.0三个版本默认优化未必相同。
从你描述的结果来看是版本高的VC++做了一些表面看上去的"无用功",其实g++也可能存在类似情况,对于小程序编译后运行反倒慢了,对于大程序速度则可能快了一些。
你可以这样验证一下,编译一个较大的工程,编译成release版本后运行,我估计版本高的编译器编译速度会慢,但运行时能快一些。
10 楼
windy0will [专家分:2300] 发布于 2011-09-19 00:01:00
6.0版本的40多k,2010版本8k,不知道是不是前者默认是用静态库编译的,而后者是动态库。动态库在启动时比较慢。
我来回复