11 個 Visual Studio 程式碼效能分析工具
軟體開發中的效能優化對程式設計師來說是一個非常重要的問題。一個小問題可能成為一個大的系統的瓶頸。但是對於程式設計師來說,通過自身去優化程式碼是十分困難的。幸運的是,有一些非常棒的工具可以幫助程式設計師進行程式碼分析和效能測試,從而大大簡化程式設計師進行程式碼效能優化的過程。MSDN 雜誌 2011 年 7 月份曾釋出主題為“.NET 程式碼分析工具和技術”的那一期,讓廣大程式設計師收穫頗豐。四年過去之後,這些工具又進一步做出了很多改進,同時也出現了更多的選擇。本文對當前主流的一些 Visual Studio 程式碼效能分析工具進行簡單的梳理,希望對大家有所幫助。本文由黃立威、張天雷整理。
AMD CodeXL
2011 年釋出的 AMD CodeAnalyst Performance Analyzer 現在已經被 AMD CodeXL 所替代。AMD CodeXL 的主要目的是幫助開發者更好利用 CPU, GPU 和 APU 的計算效能,具有強大的 GPU 除錯、CPU 和 GPU 程式碼分析、及靜態的 OpenCL 核心效能分析等能力。
AMD 提供了支援 Windows 7、Windows 8 和 Linux 系統的單機版 CodeXL 分析工具。在 Visual Studio 2010,2012 和 2013 上也有 AMD CodeXL 的擴充套件版,其在 Visual Studio 開發環境中整合了 GPU 和 APU 的除錯和分析能力。舊的 AMD CodeAnalyst Performance Analyzer extension 目前仍然可用。
JetBrains dotTrace
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 的資料訪問.
圖 1. Red Gate ANTS 效能分析工具
ANTS 記憶體分析工具可以使 .NET 的記憶體分析更加簡單,ANTS 記憶體分析工具可以用來查詢記憶體洩露,優化應用程式,從而使其具有較高的記憶體使用率,並能檢查程式碼的健康狀況,能分析任何 .NET 應用程式,包括 ASP.NET 網路應用程式。
兩個工具支援從 .NET1.0 版本到 4.5 版本的任何語言的框架,以及 Visual Studio 2005、2008、2010、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 中當前比較流行的一些效能分析工具,事實上還有非常多的工具可供選擇。但對於程式設計師來說,最重要的是根據自身的程式設計習慣以及工程專案的特點做出適合自己的選擇。
相關文章
- 11個Visual Studio程式碼效能分析工具
- Visual Studio程式碼去掉自動空格
- 使用Visual Studio分析dump
- Visual Studio 智慧程式碼外掛:CodeGeeX
- Visual Studio 11預覽: 新的程式語言功能
- 使用Visual Studio分析.NET Dump
- 一個好程式碼的工具:Video Studio AIIDEAI
- Visual Studio模板程式碼註釋小技巧分享
- Visual Studio使用Git進行程式碼版本管理Git行程
- GitHub原生AI程式碼生成工具Copilot,官方支援Visual Studio 2022GithubAI
- 11個原始碼優化和分析的Java工具原始碼優化Java
- Visual Studio Code好用的微軟程式碼編輯器微軟
- 微軟開發工具 Visual Studio 官網微軟
- AbsInt — 確保程式碼安全的靜態效能分析工具
- Visual Studio 快速分析 .NET Dump 檔案
- 將 Visual Studio .net 程式碼註釋 英文轉為中文
- 免費的visual studio智慧程式碼外掛——CodeGeeX
- Visual Studio 開發彙編程式
- 12個Visual Studio除錯效率技巧除錯
- Visual Studio Code 10個最佳主題
- 使用Visual Studio Code編寫和啟用ABAP程式碼 (上)
- visual studio連線linux編碼Linux
- 微軟適用於 Visual Studio 的 Edge 開發者工具微軟
- PHP程式碼效能監測工具PHP
- 效能最快的程式碼分析工具,Ruff 正在席捲 Python 圈!Python
- Visual Studio Code
- 使用 Visual Studio 2019 批量新增程式碼檔案頭
- 微軟程式碼編輯器Visual Studio Code Mac中文設定教程微軟Mac
- Visual Studio Code 程式碼顯示空格等空白符的方法
- 如何在Visual Studio中執行和除錯彙編程式碼?除錯
- 【譯】Visual Studio Enterprise 中的程式碼覆蓋率特性
- 程式碼分析工具小結
- 7個深度工作的Visual Studio 外掛
- Visual Studio Code 的 10 個超棒特性
- 【譯】Visual Studio 2022 - 17.8 的效能改進
- Sublime Text VS Visual Studio Code VS Atom 效能測試
- 【譯】Visual Studio 2022 - 17.10 效能增強
- 【譯】使用 Visual Studio 除錯外部原始碼除錯原始碼