評(píng)估Visual Studio性能
在Visual Studio2008中,我們就開發(fā)人員所關(guān)心的一些常見的使用場(chǎng)景在Visual Studio性能上作了很大的改進(jìn).在工作中也總結(jié)關(guān)于Visual Studio性能的話述,下面就這個(gè)問題來詳細(xì)說說吧。
#t#例如,對(duì)于新的LINQ,我們?cè)O(shè)置的性能目標(biāo)是:對(duì)同一個(gè)查詢,LINQ的性能必須顯著優(yōu)于SqlDataAdapter,與SqlDataReader相比也必須有競(jìng)爭(zhēng)力;從SQLServer檢索數(shù)據(jù)時(shí),LINQ的接口必須是最輕量級(jí)的.在我們的測(cè)試過程中,我們所嘗試過的每個(gè)測(cè)試案例幾乎都表明,LINQ實(shí)際上的確比SqlDataAdapter表現(xiàn)更好,而在大多數(shù)那些的例外的測(cè)試案例中,完成相同的任務(wù),LINQ比SqlDataReader落后的速度不超過10%??紤]到LINQ的強(qiáng)大功能,我們認(rèn)為這樣的取舍是合理的。
在VisualStudio2008中我們能看到的更顯著的Visual Studio性能提高包括:
重新生成一個(gè)VisualBasic項(xiàng)目并運(yùn)行一個(gè)后臺(tái)編譯器的速度提高到了原來的3倍,使用的內(nèi)存卻只有原來的1/3。更多細(xì)節(jié)在這里。
◆在編輯器里滾動(dòng)較大的C#文件的速度比原來快了一倍,鍵入新文本的速度是原來的1.5倍.
◆對(duì)C#中龐大類型的智能感應(yīng)響應(yīng)時(shí)間提高了至多10倍。
◆增量生成C++/CLI項(xiàng)目解決方案的時(shí)間最快可以提高到原來的1.9倍。更多細(xì)節(jié)在這里。
◆OfficeWord和Excel文件在服務(wù)器上處理的速度快了20倍。
◆TFS版本控制命令處理經(jīng)過重寫后,能夠在不需要綁定內(nèi)存到服務(wù)器上的情況下,支持無限量的關(guān)鍵命令操作。在我們的測(cè)試衡量結(jié)果中,關(guān)鍵命令的運(yùn)行速度還提高了10%到60%,尤其是在比較大的項(xiàng)目上操作時(shí)有了很大的Visual Studio性能提高。從這-里可以看到更多關(guān)于改進(jìn)TFS可測(cè)量性的工作。
我們還致力于充分利用多核硬件的優(yōu)勢(shì)來提高性能。正如我以前的日志中提到的,我們對(duì)MSBuild工具增添了多線程支持。此外,使用/MP開關(guān),您可以大大提高您的C++項(xiàng)目生成時(shí)間–在內(nèi)部的項(xiàng)目里,我們看到C++前臺(tái)編譯器在雙核硬件上性能的提高最多可高達(dá)30%。.NETFramework3.5運(yùn)行時(shí)的性能也有了顯著提升,我們精簡(jiǎn)了CLR的線程池,使得各種類型的多線程應(yīng)用程序得到性能改進(jìn)。例如,當(dāng)這些架構(gòu)方面的改進(jìn)與套接字端口API的改進(jìn)結(jié)合在一起,并使用雙核處理器的情況下,異步套接字端口I/O的操作速度最快提高了70%。更多關(guān)于此項(xiàng)工作的細(xì)節(jié)在這里。
上面這些只是Visual Studio性能改進(jìn)的一些重要方面,VS2008中還有許多其他的性能改進(jìn),而且我相信仍然有些地方我們能夠做得更好。像任何其他東西一樣,這是一場(chǎng)旅行,而非終點(diǎn)。