今年二月,如今的這個項目進入到開發階段,在前一個版本的基礎上進行增量開發,是Windows下基於MFC開發的應用程序。svn
前一個版本使用VS2003開發,如今已經不能知足咱們的需求,咱們決定在新版本中升級到VS2008。性能
使咱們升級的緣由主要有這些:測試
升級的過程主要由VS2008的轉換向導完成。按着提示的操做一步步下來,就能獲得轉換後的解決方案和工程文件。打開新的sln後構建,把有問題的地方改 掉,將老的lib及dll文件也使用VS2008從新編譯,構建出來的軟件能夠正常運行,看上去一切正常。優化
可是過了一段時間,測試人員發現Release版本的總體性能有大幅降低,幾乎是原來的二分之一到三分之二。因爲咱們的產品的定位是海量數據分析,因此性 能相當重要。我和另一名開發人員一塊兒來分析這個問題的緣由,全部工程屬性都是正確的,也查看了svn的提交記錄,彷佛一切都沒有問題。後來,咱們發現, 當前工程的編譯器選項中對因而否優化設置的是"最大化速度/O2",可是改爲"全局優化/Og"後性能反而有所提高。再查看原先的vcproj文件,發現 雖然設置的是"最大化速度/O2",可是在編譯器的命令行中卻沒有"/O2"的選項。將編譯器優化選項改成其餘再改回"最大化速度/O2",能夠看到編譯 器命令行中增長了"/O2"選項。從新構建,性能恢復正常。操作系統
問題產生的緣由,猜想應該是 VS2008轉換VS2003的工程文件後丟失了優化選項,可是在工程屬性頁中錯誤的顯示默認選項"最大化速度/O2"。命令行
因此,VS提供的項目轉換功能是不可靠的,建議將轉換後的工程文件完整仔細的檢查一遍。或者乾脆不轉換,從新創建一套工程文件,把原先的代碼添加進來,重 新設置全部工程的屬性。這樣效率比較低,可是最保險。指針