| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1406 人关注过本帖
标题:VC6.0和VS2005的release编译区别
只看楼主 加入收藏
littlemove
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2009-11-4
收藏
 问题点数:0 回复次数:0 
VC6.0和VS2005的release编译区别
新手发问,不知道有没有发对地方,在别的论坛问过无果

标题或许不太合适,问题是这样的

代码大概1000行(包含空行和注释,实际代码大概800-900行),用于一种科学计算,变量比较多,主要是float指针变量(近100个)。

在VC6.0下release生成没有什么问题,很快能生成代码,运行正常。但在vs2005下:编译...;正在链接...;正在生成代码,就停在这儿了,大概得1-2小时代码才能生成,在此期间link.exe进程一直占用50%的cpu(机器是双核),生成代码后执行也正常,但执行时间要比vc6.0生成的代码长一些。

考虑可能是release方式代码优化的问题,调了几个选项之后,发现将链接器中的优化选项的一个“使用链接时间代码生成(/ltcg)”改为“按配置优化 - 优化(/ltcg:pgoptimize)”,代码会很快生成,但运算速度很慢,运算时间大概是原时间的6-7倍,本来这个程序就是做科学运算的,速度很重要。

想知道vc6.0的release方式与vs2005区别在哪里,两者的生成代码速度为什么会差距这么大,而vs2005耗时这么长优化(可能是),程序的执行速度不如VC6.0的快,这其中有什么原因,我改怎样让vs2005代码生成速度快,而且生成的程序执行速度不会受影响。

注:Debug方式生成代码没有问题,但是debug出的程序执行速度太慢。

第二部分
附加后来的更改:

vc6.0生成release的exe文件时间不过1秒钟(观测),大小76k,程序运行时间45s左右(clock()计时)
vc2005生成release的exe文件时间2小时多(估测,上午9:30正在生成代码...,12点多跳出console框),大小52k,程序运行时间58s左右(clock()计时)

又对程序做如下更改
1.将原来宏定义的量转为变量(几个int变量Imax,Jmax,Kmax),程序中常用的Imax-1,Jmax-1,Kmax-1也用变量Im,Jm,Km代替
2.将几个值相等,但意义不同的变量赋值方式改变,如n_1=10;n_2=n_1;n_3=n_1等改为n_1=10;n_2=10;n_3=10

更改后
vc2005生成release的exe文件时间5分30秒左右(手机秒表计时),大小48k,程序运行时间58左右(clock()计时)

生成代码虽然快了,运行时间没变,还是比vc6生成的程序慢,vc2005如何进行的优化?

注:第二部分中的测试均未对vc默认编译选项进行更改
搜索更多相关主题的帖子: release 编译 
2009-11-04 15:28
快速回复:VC6.0和VS2005的release编译区别
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026819 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved