冥顽不化的VC6粉丝对VC2010的初步测试~解决办法

冥顽不化的VC6粉丝对VC2010的初步测试~~~~~~~~~~~~~~~~~

简要介绍一下测试用例:

一个大概2.6W行,MFC静态链接,使用 unicode 的程序。功能有点类似于 googleearth 和 labview 一部分功能的混合,将来运行的目标平台为 pc104 + XP 或 arm + WinCE。对程序运行的实时性要求比较高。在程序当中有较大量且较密集的图形绘制(GDI实现)、磁盘文件读写、串口读写,一些比较简单的数学运算(幂、对数、三角函数)。使用了多线程、多媒体定时器、自绘制控件等。

最重要的一点,原来的程序在 VC6 + sp6 下开发和编译

从VC6移植到VC2010,编译连接,66个错误和188个警告,先说错误,66个错误实际上就是三类。

第一类占到错误数量 95% 的是数学库函数参数错误,比如说 pow(int, int) VC6下不会报错,但VC2010认为是错误,必须通过强制类型转换变为pow(double,int)。

第二类错误是经典的 for(int i = 0; i < 99; i++),有且仅有一个。

第三类或者说第三个错误是 MFC 库当中的 CFrameWndEx::OnActivateApp(BOOL bActive, DWORD dwThreadID),VC2010的MFC把dwThreadID的变量类型改为了DWORD

再说警告,188个警告当中大概有150到160多个是字符串操作警告,比如警告建议使用 wcscpy_s 来代替_tcscpy,剩下的我没有深究,因为毕竟只是一个初步测试。如果是正式开发的话,还是要尽量处理。

花了半个小时不到移植完毕。开始大致测试一下生成 EXE 的性能,都是 release 版

大小:VC6 生成的 exe 388k,VC10生成的 1850k。差别相当明显,不过我觉得意义不大,因为现在的存储介质已经相当廉价了。不管是桌面PC还是嵌入式系统。

资源消耗:这个是我最关心的一点,因为嵌入式系统的硬件配置通常都是远低于桌面PC。通过测试对比在完全相同环境下exe运行时的CPU占用率,无论在 Win7 系统还是 XP 系统下,VC6 生成的程序与 VC10 生成的程序运行时 CPU 占用率基本没有差别。

结论:VC6 恐怕真的可以功成身退了,如果还深切缅怀VC6的话,那么可以把VC10打扮成VC6的模样,或者把VC6当编辑器,VC10当编译器来用.


附:
1、VC2010的MSDN貌似相当的坑爹啊
2、初试了一下VC10的分析和性能报告,非常好,非常适用于对程序运行效率敏感的情况
3、前几天专门找了个TC2来准备怀怀旧,结果XP下跑不起来,郁闷。



------解决方案--------------------
又抢了LZ的沙发,谢谢分享~~
------解决方案--------------------
vs2010新增的功能暂时都用不上,而且vc2010编译出来的程序最低运行要求系统为XP SP2,所以坚守vs2008 sp1。主要因为vs2008 sp1包含MFC Feature Pack、支持C++ TR1、支持for each语法、IDE比vs2010快。

vs2010的HelpLibrary确实相当的难用,虽然sp1有所改善,但还是很烂,建议用第三方的帮助查看器H3Viewer,这个仅仅是查看器而已,帮助的内容还是微软官方的。
------解决方案--------------------
vs2010出sp1啦?
------解决方案--------------------
习惯用08,以后估计也要用10了
------解决方案--------------------
其实我一般是在VC2010下面开发,然后最后提交产品时用VC6编译。这样很好。
------解决方案--------------------
2010 的帮助就一个字 烂!
------解决方案--------------------
呵呵,2010速度慢点,2G内存以上可以考虑使用。
------解决方案--------------------
谢谢分享。。。。。
------解决方案--------------------
VC6 生成的 exe 388k,VC10生成的 1850k
---
我的小型网游的竞争对手是网页游戏
所以必须越小越好

MFC的系统功能,我用得越来越少了
因为个性化需求越多越多
------解决方案--------------------
vs2008使用中。。。
------解决方案--------------------
现在使用VS2008,当2012出来后,再使用VS2010,这样会走很多弯路.