[翻译]编写高性能 .NET 代码 第一章:工具介绍 -- Visual Studio
Visual Studio
vs雖然不是全宇宙唯一的IDE,但它是.net開發(fā)人員最常用的開發(fā)工具。它自帶一個性能分析工具,你可以使用它來做開發(fā),不同的vs版本在工具上會略有差別。
VS可以分析CPU使用率,內(nèi)存分配以及資源鎖情況。它能在你開發(fā)與運(yùn)行中對項(xiàng)目做綜合的測試。
它很強(qiáng)大,可以準(zhǔn)確的測量運(yùn)行了生產(chǎn)環(huán)境數(shù)據(jù)的大型應(yīng)用程序。但是它集成在vs里面,如果你希望在生產(chǎn)環(huán)境下使用,需要有一個獨(dú)立的性能監(jiān)控工具。這個微軟幫你想好了,從vs2013以后的版本里,在安裝光盤里有一個獨(dú)立版本。
安裝好后可以在命令行模式下使用
1.從安裝后的測試工具目錄下執(zhí)行,或者將安裝目錄添加到環(huán)境變量Path里。(福利,64位安裝后目錄:C:\Program Files (x86)\Microsoft Visual Studio 14.0\Team Tools\Performance Tools )
2.執(zhí)行:VsPerfCmd.exe /Start:Sample /Output:outputfile.vsp
3.運(yùn)行你要測試的軟件
4.執(zhí)行:VsPerfCmd.exe /Shutdown
這樣你可以獲得一個outputfile.vsp文件,再拖本地的vs里進(jìn)行分析
我測試了一下,可用,但是進(jìn)入cmd時需要管理員模式才行
VsPerfCmd.exe 還支持很多參數(shù),除了上面例子里的(Sample),你還可以選擇:
Coverage(覆蓋)—搜集代碼覆蓋率數(shù)據(jù)
Concurrency(并發(fā))—收集資源的并發(fā)數(shù)據(jù)
Trace—用于收集方法的執(zhí)行時間和次數(shù)
Smple 模式會每隔幾毫秒中斷一次你的進(jìn)程,并獲得堆棧信息。這個是獲得你CPU使用率的最佳方式。但是,它并不能很好的記錄I/O訪問,當(dāng)然它不會增加太多的CPU使用量,它可以幫你記錄整體的運(yùn)行時間。
Trace 模式則需要修改每個函數(shù)用來記錄每次調(diào)用的時間情況。這會入侵你的代碼,導(dǎo)致程序執(zhí)行會變慢。然而,它雖然會花費(fèi)更多的時間用于記錄每個函數(shù)的情況,但它可以記錄更準(zhǔn)確的信息,特別是I/O訪問。
Coverage(覆蓋)模式不是用于性能分析,但可以讓你知道哪些代碼被執(zhí)行過。這是一個很好用的功能,在你運(yùn)行單元測試時,可以知道你的測試覆蓋了哪些代碼。有些商業(yè)產(chǎn)品可以幫助你做這些,但你還可以為自己做得更好。
Concurrency(并發(fā))模式記錄當(dāng)通過鎖或其他同步對象對資源發(fā)生爭用時發(fā)生的事件。此模式可以告訴你,如果你的線程由于競爭而被阻塞。有關(guān)異步編程和測試應(yīng)用中鎖爭用量的更多信息,請參見第四章。
Visual Studio里的性能測試 工具是最好用的工具,但是他也相當(dāng)?shù)馁F(恩,說的是國外,國內(nèi)的大家請自行忽略)。如果你不能使用vs,我們也提供一些免費(fèi)的替代產(chǎn)品。幾乎所有的性能工具都使用相同的底層機(jī)制(至少在Windows 8 / Server 2012及以上內(nèi)核中)
ETW事件。ETW是Windows的事件追蹤,他是操作系統(tǒng)以快速并高效的方式記錄所有的日志信息。所有的應(yīng)用程序都可以產(chǎn)生這些事件,分析器可以捕捉這些事件進(jìn)行分析。第8章里會描述如何利在自己的程序里跑出或者捕捉這些事件。
相關(guān)文章:
[翻譯]編寫高性能 .NET 代碼 第一章:性能測試與工具 -- 選擇什么來衡量
[翻譯]編寫高性能 .NET 代碼 第一章:性能測試與工具 -- 平均值 vs 百分比
原文地址:http://www.cnblogs.com/yahle/p/6531286.html
.NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關(guān)注
總結(jié)
以上是生活随笔為你收集整理的[翻译]编写高性能 .NET 代码 第一章:工具介绍 -- Visual Studio的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 发布支持多线程的PowerShell模块
- 下一篇: ASP.NET 开发者 开始学习ASP.