使用Visual Studio項(xiàng)目轉(zhuǎn)換功能需謹(jǐn)慎
今年二月,現(xiàn)在的這個(gè)項(xiàng)目進(jìn)入到開發(fā)階段,在前一個(gè)版本的基礎(chǔ)上進(jìn)行增量開發(fā),是Windows下基于MFC開發(fā)的應(yīng)用程序。
前一個(gè)版本使用VS2003開發(fā),現(xiàn)在已經(jīng)不能滿足我們的需求,我們決定在新版本中升級到VS2008。
使我們升級的原因主要有這些:
VS2003在調(diào)試時(shí)不支持直接查看STL各種數(shù)據(jù)容器中的元素(其實(shí)通過指針可以查看某個(gè)元素的值,但不能一次查看所有元素); 不支持并行構(gòu)建,二十多萬行代碼,構(gòu)建一次需要近半個(gè)小時(shí);
需要支持Vista/Win7操作系統(tǒng),VS2003沒有對UAC的支持,且不能直接增加manifest文件;
VS2008相對于VS2003其他的一些優(yōu)化
升級的過程主要由VS2008的轉(zhuǎn)換向?qū)瓿?。按著提示的操作一步步下來,就能得到轉(zhuǎn)換后的解決方案和工程文件。打開新的sln后構(gòu)建,把有問題的地方改掉,將老的lib及dll文件也使用VS2008重新編譯,構(gòu)建出來的軟件可以正常運(yùn)行,看上去一切正常。
但是過了一段時(shí)間,測試人員發(fā)現(xiàn)Release版本的整體性能有大幅下降,幾乎是原來的二分之一到三分之二。由于我們的產(chǎn)品的定位是海量數(shù)據(jù)分析,所以性能至關(guān)重要。我和另外一名開發(fā)人員一起來分析這個(gè)問題的原因,所有工程屬性都是正確的,也查看了svn的提交記錄,似乎一切都沒有問題。后來,我們發(fā)現(xiàn),當(dāng)前工程的編譯器選項(xiàng)中對于是否優(yōu)化設(shè)置的是"***化速度/O2",但是改成"全局優(yōu)化/Og"后性能反而有所提升。再查看原先的vcproj文件,發(fā)現(xiàn)雖然設(shè)置的是"***化速度/O2",但是在編譯器的命令行中卻沒有"/O2"的選項(xiàng)。將編譯器優(yōu)化選項(xiàng)改為其他再改回"***化速度/O2",可以看到編譯器命令行中增加了"/O2"選項(xiàng)。重新構(gòu)建,性能恢復(fù)正常。
問題產(chǎn)生的原因,猜測應(yīng)該是 VS2008轉(zhuǎn)換VS2003的工程文件后丟失了優(yōu)化選項(xiàng),但是在工程屬性頁中錯(cuò)誤的顯示默認(rèn)選項(xiàng)"***化速度/O2"。
所以,VS提供的項(xiàng)目轉(zhuǎn)換功能是不可靠的,建議將轉(zhuǎn)換后的工程文件完整仔細(xì)的檢查一遍?;蛘吒纱嗖晦D(zhuǎn)換,重新建立一套工程文件,把原先的代碼添加進(jìn)來,重新設(shè)置所有工程的屬性。這樣效率比較低,但是最保險(xiǎn)。
原文標(biāo)題:慎用Visual Studio對項(xiàng)目的轉(zhuǎn)換功能
鏈接:http://www.cnblogs.com/Chase/archive/2010/07/03/1770416.html
【編輯推薦】
- WEB性能測試:你應(yīng)該帶上Visual Studio 2010
- Visual Studio 2010中手動(dòng)添加圖片文件
- 使用Visual Studio 2010統(tǒng)一管理數(shù)據(jù)庫對象
- Visual Studio 2010 TFS探索之旅
- Visual Studio 2010更改顏色背景的方法