軟件開發中的性能優化對程序員來講是一個很是重要的問題。一個小問題可能成爲一個大的系統的瓶頸。可是對於程序員來講,經過自身去優化代碼是十分困難的。幸運的是,有一些很是棒的工具能夠幫助程序員進行代碼分析和性能測試,從而大大簡化程序員進行代碼性能優化的過程。MSDN雜誌2011年7月份曾發佈主題爲「.NET代碼分析工具和技術」的那一期,讓廣大程序員收穫頗豐。四年過去以後,這些工具又進一步作出了不少改進,同時也出現了更多的選擇。本文對當前主流的一些Visual Studio代碼性能分析工具進行簡單的梳理,但願對你們有所幫助。本文由黃立威、張天雷整理。php
AMD CodeXLhtml
2011年發佈的AMD CodeAnalyst Performance Analyzer 如今已經被AMD CodeXL所替代。AMD CodeXL的主要目的是幫助開發者更好利用CPU, GPU和APU的計算性能,具備強大的GPU調試、CPU和GPU代碼分析、及靜態的OpenCL內核性能分析等能力。程序員
AMD提供了支持Windows 七、Windows 8和Linux系統的單機版CodeXL分析工具。在Visual Studio 2010,2012和2013上也有AMD CodeXL的擴展版,其在Visual Studio開發環境中集成了GPU和APU的調試和分析能力。舊的AMD CodeAnalyst Performance Analyzer extension目前仍然可用。編程
JetBrains dotTracewindows
JetBrains dotTrace通過四年漫長的發展,如今已是一個包含代碼執行跟蹤工具和性能分析工具的套件。它包括dotTrace Performance和dotTrace Memory 兩個工具,dotTrace Performance用來分析代碼性能,好比函數執行時間,調用次數,消耗時間比率等,dotTrace Memory通常用來分析內存佔用狀況。你能夠在本地和遠程系統中對代碼進行跟蹤、採樣或逐行分析。dotTrace對微軟.NET框架的支持一直到4.5.2版本,也可用於分析Silverlight4或5的單機桌面應用程序、Web應用程序、Windows通訊基礎(WCF)服務等。新功能包括時間軸分析(timeline profiling)和SQL查詢分析。性能優化
dotTrace extension Visual Studio Gallery網頁提供了一個很是清晰,簡潔的產品概述。經過看完概述若是你對產品有興趣,能夠到JetBrains網站決定下載或購買。
JetBrains目前提供有時間限制的免費試用版以及幾種許可選項,例如ReSharper Ultimate包,其中包括ReSharper,dotCover,dotTrace,dotMemory,以及ReSharper C + +,全部包只須要一個許可證。服務器
RedGate ANTS網絡
RedGate ANTS性能分析工具和ANTS內存分析工具 是另外一組的商業工具,可用於分析.NET可運行文件,ASP.NET應用程序,IIS中的Web服務,IIS Express, Web開發服務器,SharePoint 2007或2010年套裝,Silverlight應用程序,Windows服務,和COM +應用程序等。閉包
ANTS性能分析工具(圖1)能夠幫助分析任何.NET支持的代碼庫,以及HTTP請求,存儲IO,同時支持SQL服務器,Oracle,MySQL,MariaDB,PostgreSQL的數據訪問.app
圖1. Red Gate ANTS 性能分析工具
ANTS內存分析工具可使.NET的內存分析更加簡單,ANTS內存分析工具能夠用來查找內存泄露,優化應用程序,從而使其具備較高的內存使用率,並能檢查代碼的健康情況,能分析任何.NET應用程序,包括ASP.NET網絡應用程序。
兩個工具支持從.NET1.0版本到4.5版本的任何語言的框架,以及Visual Studio 200五、200八、20十、2012和2013。能夠在RedGate網站上查看試用版以及訂價。同時也有一個免費的版本ANTS Profiler Visual Studio Add-in extension,讓你在Visual Studio上能夠直接訪問性能分析工具和內存分析工具。
Telerik JustTrace
2013年,Telerik獲了EQATEC,所以EQATEC分析工具如今是Telerik JustTrace .NET內存和性能分析工具的一部分。JustTrace提供兩種模式的性能分析,輕量化分析的採樣分析工具和收集CLR事件進行更深刻分析的跟蹤工具。它還具備捕獲 .NET實例分配快照的內存分析的功能。
JustTrace集成了Visual Studio 2013,2012,2010和2008,也能夠做爲一個單機版的分析工具。Telerik提供30天的試用期,同時JustTrace也可做爲DevCraft工具套件的一部分。
Visual Studio質量和診斷中心
除了上述分析工具,Visual Studio自己也內置了優秀的分析和調試工具,都放在 Visual Studio的質量與診斷中心。
質量和診斷中心除了包括熟悉的Visual Studio分析工具,還有一些新的工具,其功能包括JavaScript內存分析, HTML UI響應能力分析,和Windows應用商店應用的XAML UI響應能力分析,和能量消耗、CPU使用、內存使用狀況分析等。此外,Visual Studio 2012中的JavaScript函數時間和性能嚮導也已經更新,包含在新的質量和診斷中心中。由於這些工具如今均可以在中心中得到,因此能夠在一個單獨的分析會話中運行多個工具,並得到相互結合和交叉分析的結果。
你還能夠在Visual Studio 2015的性能和診斷頁面運行分析工具。Visual Studio 2015中的一些調試和診斷功能獲得了加強,包括支持基於JavaScript的Apache Cordova項目,以及基於C # 的Xamarin和Android項目的跨平臺調試
其餘改進包括在「監視」窗口經過lambda表達式進行step,經過Visual Studio遠程工具運行、調試和測試其餘計算機上的程序,內置的HTTP流量數據的網絡診斷等。
許多這些新工具與強大的Visual Studio 2015診斷工具調試器窗口放在了一塊兒,並組合了輸出窗口,IntelliTrace歷史數據,以及性能和診斷中心的工具。
其餘的性能分析工具
除了以上介紹的代碼性能分析工具,還存在其餘的專業的代碼性能分析工具,其中許可能是由和你同樣的程序員所開發,並可供無償使用。
Clr Heap Allocation Analyzer extension是一個基於Roslyn的C #堆分配診斷分析工具,能夠用於查看清晰的分配,boxing分配,閉包捕獲等。您能夠做爲一個單機版的應用程序或做爲Visual Studio內部的代碼輔助工具運行該分析工具。
Visual Leak Detector for Visual C++是一個開源的Visual C++內存泄漏檢測系統,它與Visual Studio調試器一塊兒工做。最初由Dan Moulding開發,項目目前由Arkadiy shapkin維護。
Frans Bouma的ORM Profiler extension(圖2)讓你能夠實時地深刻實體框架數據訪問代碼發現性能問題,並快速定位到它們。它具備在線、離線兩種產品分析模式,能夠直接從分析結果導航到項目中的相關代碼。
圖2 使用ORM Profiler進行實體框架數據訪問的調試
爲了檢查和優化項目中的靜態資源,Mads Kristensen的Image Optimizer extension 爲解決方案資源管理器中的任何文件夾和圖標添加了右鍵菜單,幫助自動優化文件夾中全部的PNG,GIF和JPEG文件。
最後,還有 Xamarin Profiler,它是一個跨平臺開發框架。在這一框架內,開發 Android 和 iOS 應用能夠不用轉到 Eclipse 或者額外購買 Mac 並使用 Xcode,而繼續在Visual Studio之中使用 C# 與 .NET框架進行。
本文簡單介紹了Visual Studio中當前比較流行的一些性能分析工具,事實上還有很是多的工具可供選擇。但對於程序員來講,最重要的是根據自身的編程習慣以及工程項目的特色作出適合本身的選擇。