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