.NET 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 版本,也可用于分析 Silverlight 4 或 5 的单机桌面应用程序、Web 应用程序、Windows通信基础(WCF)服务等。新功能包括时间轴分析(timeline profiling和SQL查询分析。
dotTrace extension Visual Studio Gallery网页提供了一个非常清晰,简洁的产品概述。通过看完概述如果你对产品有兴趣,可以到JetBrains网站决定下载或购买。
JetBrains 目前提供有时间限制的免费试用版以及几种许可选项,例如,ReSharper Ultimate 包,其中包括 ReSharper,dotCover,dotTrace,dotMemory,以及 ReSharper C + +,所有包只需要一个许可证。
图 1 JetBrains
RedGate ANTS
RedGate ANTS 性能分析工具和 ANTS 内存分析工具是另一组的商业工具,可用于分析.NET可运行文件,ASP.NET应用程序,IIS中的Web服务,IIS Express, Web开发服务器,SharePoint 2007或2010年套装,Silverlight应用程序,Windows服务,和COM +应用程序等。
ANTS 性能分析工具(图 2)可以帮助分析任何.NET支持的代码库,以及HTTP请求,存储IO,同时支持SQL服务器,Oracle,MySQL,MariaDB,PostgreSQL的数据访问.
图 2 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(图 3)让你可以实时地深入实体框架数据访问代码发现性能问题,并快速定位到它们。它具有在线、离线两种产品分析模式,可以直接从分析结果导航到项目中的相关代码。
图 3 使用ORM Profiler进行实体框架数据访问的调试
- 为了检查和优化项目中的静态资源,Mads Kristensen的Image Optimizer extension 为解决方案资源管理器中的任何文件夹和图标添加了右键菜单,帮助自动优化文件夹中所有的PNG,GIF和JPEG文件。
- 最后,还有 Xamarin Profiler,它是一个跨平台开发框架。在这一框架内,开发 Android 和 iOS 应用可以不用转到 Eclipse 或者额外购买 Mac 并使用 Xcode,而继续在Visual Studio之中使用 C# 与 .NET框架进行。
本文简单介绍了Visual Studio中当前比较流行的一些性能分析工具,事实上还有非常多的工具可供选择。但对于程序员来说,最重要的是根据自身的编程习惯以及工程项目的特点做出适合自己的选择。
.NET 11 个 Visual Studio 代码性能分析工具的更多相关文章
- 11个Visual Studio代码性能分析工具
软件开发中的性能优化对程序员来说是一个非常重要的问题.一个小问题可能成为一个大的系统的瓶颈.但是对于程序员来说,通过自身去优化代码是十分困难的.幸运的是,有一些非常棒的工具可以帮助程序员进行代码分析和 ...
- 11 个 Visual Studio 代码性能分析工具
软件开发中的性能优化对程序员来说是一个非常重要的问题.一个小问题可能成为一个大的系统的瓶颈.但是对于程序员来说,通过自身去优化代码是十分困难的.幸运的是,有一些非常棒的工具可以帮助程序员进行代码分析和 ...
- .NET : 使用代码性能分析工具
NET : CLR Profiler的使用 经常讲课的时候会提到值类型和引用类型,也会提到如何查看它们的大小.多次被朋友问到,如何真的想要知道到底每个方法分配了多少内存之类的问题,其实这可以通过CLR ...
- .NET 性能分析工具
Download .NET Profiler http://www.yourkit.com/dotnet/download/ dotTrace 5.5 Performance http://www.j ...
- 提升ReSharper和Visual Studio的性能
转载 作者:赵青青 出处:http://www.cnblogs.com/zhaoqingqing/ 文章目录[点击展开](?)[+] 提升性能 我们不断地确保ReSharper的正常 ...
- 在Visual Studio代码中使用Flask
Flask是一个用于Web应用程序的轻量级Python框架,它提供了URL路由和页面呈现的基础知识. Flask被称为“微”框架,因为它不直接提供表单验证,数据库抽象,身份验证等功能.这些功能由称为F ...
- 使用 profile 进行python代码性能分析
定位程序性能瓶颈 对代码优化的前提是需要了解性能瓶颈在什么地方,程序运行的主要时间是消耗在哪里,对于比较复杂的代码可以借助一些工具来定位,python 内置了丰富的性能分析工具,如 profile,c ...
- CPU性能分析工具原理
转载请保留以下声明 作者:赵宗晟 出处:https://www.cnblogs.com/zhao-zongsheng/p/13067733.html 很多软件都要做性能分析和性能优化.很多语言都会有他 ...
- Java 性能分析工具 , 第 2 部分:Java 内置监控工具
引言 本文为 Java 性能分析工具系列文章第二篇,第一篇:操作系统工具.在本文中将介绍如何使用 Java 内置监控工具更加深入的了解 Java 应用程序和 JVM 本身.在 JDK 中有许多内置的工 ...
随机推荐
- hdu4942线段树模拟rotate操作+中序遍历 回头再做
很有意思的题目,详细题解看这里 https://blog.csdn.net/qian99/article/details/38536559 自己的代码不知道哪里出了点问题 /* rotate操作不会改 ...
- python 全栈开发,Day135(爬虫系列之第2章-BS和Xpath模块)
一.BeautifulSoup 1. 简介 简单来说,Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据.官方解释如下: ''' Beautiful Soup提供一些简单 ...
- linux常用软件安装,常用命令
jdk [root@localhost]# tar -zxvf jdk-8u144-linux-x64.tar.gz [root@localhost]# vi /etc/profile 在profil ...
- 《剑指offer》-双栈实现队列
题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 很基本的STL容器操作了,应该可以1A的,但是忘记返回值的时候,clang的报错感觉并不友好啊.. cl ...
- 【C++ Primer | 19】运行类型识别
运行类型识别 一.使用RTTI dynamic_cast运算符的调用形式如下所示: dynamic_cast<type*>(e) //e是指针 dynamic_cast<type&a ...
- 浅析C语言的变量
参考资料 寄存器变量 用register声明的变量是寄存器变量,是存放在CPU的寄存器里的.而我们平时声明的变量是存放在内存中的.虽说内存的速度已经很快了,不过跟寄存器比起来还是差得远. 寄存器变量和 ...
- 2733: [HNOI2012]永无乡
题解: 爬到了bzoj的数据哈哈哈哈 然后提交上去t了 自己测只有1秒多呀 不理解 然后这题目就是个线段树/平衡树合并裸题 来练一下线段树合并 据说是nlogn的 #include <bits/ ...
- 【noip模拟赛5】任务分配 降维dp
描述 现有n个任务,要交给A和B完成.每个任务给A或给B完成,所需的时间分别为ai和bi.问他们完成所有的任务至少要多少时间. 输入 第一行一个正整数n,表示有n个任务.接下来有n行,每行两个正整数a ...
- 6-2 铁轨 uva 514
较为简单的stack题目 但是还是犯了一些错误: 1. 要想清空栈,直接重新定义较为方便! 2.在if(s.top()==x)时 加上 !s.empty() 否则程序会崩溃 3. 必须要加上i- ...
- 023 SpringMVC拦截器
一:拦截器的HelloWorld 1.首先自定义拦截器 只要实现接口就行. package com.spring.it.interceptors; import javax.servlet.http. ...