【IT168 專(zhuān)稿】在“從VC++6.0不足看Visual C++2010新特性”一文中,我們了解到Visual C++ 2010在語(yǔ)言層面開(kāi)始支持最新的C++標準,在IDE以及MFC庫等方面,也都有了質(zhì)的變化。對于集成開(kāi)發(fā)環(huán)境(IDE)來(lái)說(shuō),以前的版本中也都有所改變,但都是幾次不大的更新。Visual C++ 2010中對IDE有著(zhù)革命性的增強。
我們知道Visual C++ 開(kāi)發(fā)環(huán)境為項目管理與配置(包括更好地支持大型項目)、源代碼編輯、源代碼瀏覽和調試工具提供強力的支持,是開(kāi)發(fā)過(guò)程中不可缺少的工具,是提高代碼生產(chǎn)力的基本保障。在本文中,我們將對Visual C++ 2010 IDE新特性進(jìn)行剖析,主要從MSBuild改進(jìn)的項目和生成系統、更快的編譯和更高的性能、更加智能的 IntelliSense、#include 自動(dòng)完成功能、新的編輯環(huán)境等五個(gè)方面進(jìn)行闡述。
MSBuild改進(jìn)的項目和生成系統
Visual C++ 2010中,解決方案和項目的構建系統(build system)從原先基于VCBuild的構建系統,遷移到基于MSBuild(Microsoft Build Engine)的構建系統。那么MSBuild 是什么呢?MSBuild 是 Visual C++ 項目的標準生成系統,是一個(gè)基于 XML 的項目文件或可選設置文件的工具。它集成在Visual Studio的開(kāi)發(fā)環(huán)境中,為Visual C++ 生成過(guò)程提供了便利,提高了效率。MSBuild的加入,使得“一次編碼,多個(gè)平臺運行”成為可能。
在Visual Studio的早期版本中,只能使用當前版本提供的工具集,如果您想使用新的集成開(kāi)發(fā)環(huán)境(IDE),您必須等到能夠遷移到新工具集的時(shí)候,這給一些時(shí)尚的開(kāi)發(fā)人員帶來(lái)了許多不便。Visual Studio 2010 允許您以多個(gè)工具集版本為目標進(jìn)行生成系統。通過(guò) Visual Studio 2010,您可以將應用程序編譯為在若干 .NET Framework 版本的任意一個(gè)上運行。 例如,可以將同一個(gè)應用程序編譯為既能在 .NET Framework 3.5 版本上運行,也能在 .NET Framework 4 版本上運行。下圖顯示了屬性頁(yè)上的本機多定向設置,您可以將 Visual C++ 9.0 編譯器和庫作為目標,同時(shí)在 Visual Studio 2010 中工作。

另外,由于MSBuild 使用基于 XML 的項目文件格式,該格式直接明了,可擴展性強,同時(shí)也增強了C++ 生成系統的可擴展性。當默認生成系統不足以滿(mǎn)足您的需求時(shí),可以通過(guò)添加自己的工具或任意其他生成步驟來(lái)擴展該系統。MSBuild使用任務(wù)作為可執行代碼的可重復使用單元來(lái)執行生成操作,您可以通過(guò)在XML文件中定義自己的任務(wù)來(lái)擴展系統,MSBuild會(huì )使用這些XML文件動(dòng)態(tài)生成任務(wù)。
下面的示例描述通過(guò)XML文件動(dòng)態(tài)生成任務(wù)。該項目包含兩個(gè)任務(wù):一個(gè)是 GenerateResource 任務(wù),用于編譯資源;一個(gè)是 Csc 任務(wù),用于編譯源代碼文件和編譯的資源文件。 由 GenerateResource 任務(wù)編譯的資源文件存儲在 Resources 項中并傳遞給 Csc 任務(wù)。

更快的編譯和更高的性能
Visual Studio 2010通過(guò)增強編譯器后端的代碼生成功能來(lái)提高生成應用程序的編譯速度、質(zhì)量和性能。主要表現以下幾個(gè)方面:
通過(guò)優(yōu)化單指令多數據(SIMD)的代碼生成功能,提高代編譯器的性能和代碼質(zhì)量。其中的改進(jìn)主要包括打破錯誤依賴(lài)關(guān)系,向量化常量向量初始化,更好地分配 XMM 寄存器消除多余的負載、存儲和移動(dòng)。
通過(guò)優(yōu)化x64 代碼生成提高x64 平臺上的編譯速度。LTCG編譯(鏈接時(shí)間代碼生成)通常會(huì )比非LTCG 編譯占用更長(cháng)的時(shí)間,尤其是對于大型的應用程序。在 Visual Studio 2010 中,LTCG 編譯速度提高高達 30%。在該版本中引入了一個(gè)寫(xiě)入 PDB 文件的專(zhuān)用線(xiàn)程,因此您在使用 /DEBUG 開(kāi)關(guān)時(shí)會(huì )看到鏈接時(shí)間的縮減。
通過(guò)添加對被檢測二進(jìn)制文件的非鎖定版本的支持,PGO(按配置優(yōu)化)檢測的運行速度有所提高。還有一個(gè)新的 POGO 選項 PogoSafeMode,用于指定優(yōu)化應用程序時(shí)使用安全模式還是快速模式??焖倌J绞悄J行為。安全模式是線(xiàn)程安全的,但比快速模式要慢。
編譯器生成的代碼的質(zhì)量也有所提高?,F在完全支持高級矢量擴展 (AVX),這對于 AMD 和 Intel 處理器中通過(guò)固有選項和 /arch:AVX 選項進(jìn)行大量浮點(diǎn)計算的應用程序非常重要,使用 /fp:fast 選項可以使浮點(diǎn)計算更為精確?! ?/p>
聯(lián)系客服