今年二月,如今的这个项目进入到开发阶段,在前一个版本的基础上进行增量开发,是Windows下基于MFC开发的应用程序。svn
前一个版本使用VS2003开发,如今已经不能知足咱们的需求,咱们决定在新版本中升级到VS2008。性能
使咱们升级的缘由主要有这些:测试
升级的过程主要由VS2008的转换向导完成。按着提示的操做一步步下来,就能获得转换后的解决方案和工程文件。打开新的sln后构建,把有问题的地方改 掉,将老的lib及dll文件也使用VS2008从新编译,构建出来的软件能够正常运行,看上去一切正常。优化
可是过了一段时间,测试人员发现Release版本的总体性能有大幅降低,几乎是原来的二分之一到三分之二。因为咱们的产品的定位是海量数据分析,因此性 能相当重要。我和另一名开发人员一块儿来分析这个问题的缘由,全部工程属性都是正确的,也查看了svn的提交记录,彷佛一切都没有问题。后来,咱们发现, 当前工程的编译器选项中对因而否优化设置的是"最大化速度/O2",可是改为"全局优化/Og"后性能反而有所提高。再查看原先的vcproj文件,发现 虽然设置的是"最大化速度/O2",可是在编译器的命令行中却没有"/O2"的选项。将编译器优化选项改成其余再改回"最大化速度/O2",能够看到编译 器命令行中增长了"/O2"选项。从新构建,性能恢复正常。操作系统
问题产生的缘由,猜想应该是 VS2008转换VS2003的工程文件后丢失了优化选项,可是在工程属性页中错误的显示默认选项"最大化速度/O2"。命令行
因此,VS提供的项目转换功能是不可靠的,建议将转换后的工程文件完整仔细的检查一遍。或者干脆不转换,从新创建一套工程文件,把原先的代码添加进来,重 新设置全部工程的属性。这样效率比较低,可是最保险。指针