.NET性能调优之一:ANTS Performance Profiler的使用介绍_实用技巧

在使用.NET进行快速地上手与开发出应用程序后,接下来面临的问题可能就是程序性能调优方面的问题,而性能调优有时候会涉及方方面面的问题,如程序宿主系统、数据库、网络环境等等,而当程序异常庞大复杂的时候,性能调优将变得更加无从下手。

本系列文章主要会介绍一些.NET性能调优的工具、Web性能优化的规则(如YSlow)及方法等等内容。成文前最不希望看到的就是园子里不间断的“哪个语言好,哪个语言性能高”的争论,不多说,真正的明白人都应该知道这样的争论有没有意义,希望我们能从实际性能优化的角度去讨论问题。

ANTS Performance Profiler的基本使用

ANTS Performance Profiler是RedGate旗下强大的性能调优产品,官方产品页面在这里。

先来看一下软件的基本使用。

使用下面这段代码进行简单的测试。

这是一个控制台应用程序,程序很简单,先进行10000次循环,输出和,再使用LINQ在list里找出1000的值输出。

复制代码 代码如下:

static void Main()
{
var list = new List<int>();

var sum = 0;
for (var i = 0; i < 10000; i++)
{
sum += i;
list.Add(i);
}
Console.WriteLine(sum);

//find the value use linq: 1000
var result = list.Where(p => p.Equals(1000));
foreach (var i in result)
{
Console.WriteLine(i);
}
Console.ReadKey();
}

编译程序后,启动ANTS Performance Profiler,会自动弹出向导页面,在此页面中,可以看到软件支持多种.NET程序的性能监控,如EXE、web、Windows Service等等。

而在Performace Counters中可以根据需要选择多种计数器,IO、内存分配、处理器等等。

针对测试DEMO,选择编译后的exe文件路径,因为刚才是debug编译,所以选择程序文件夹下\bin\Debug\里面的exe即可。

在Profiling Mode里可以选择监控的级别,基本就是监控信息的多少与速度的权衡,默认选择“最详细”即可。其他的详细设置可以参考帮助文档。

点击“Start Profiling”,启动程序。

分析结果的查看与分析

软件的基本工作原理是在.NET编译出的IL代码里放入钩子用来记录时间,然后通过直观的界面显示出哪部分代码耗能最大。所以这是性能调优最直接的方法,针对最耗时的代码段进行优化即可。

点击“Start Profiling”后启动之前编译的程序,软件开始执行,如果是其他交互程序如winform、web等,操作完需要进行性能调优的功能后,在顶部的运行时间轴里用鼠标选定需要查看的时间段即可,一般有性能问题的时间段会出现一个波峰,选定那个时间段即可。

选定后可以立即在下面的结果窗口中看到最耗时的方法,比如上面的DEMO,当然性能都消耗在了Main函数上。

软件提供了多种度量值查看性能损耗,有百分比和多种时间格式,这里选定“秒”作为度量单位。

再选择要查看的函数,软件强大之处就显现出来了。

右侧的红色标线,点击可以快速定位到最耗能的代码,颜色越深表示那段代码越耗能。左侧可以看到行号,此段代码执行的次数(Hit Count),平均执行时间,总的执行时间,当然还可以同时看到代码供分析使用。

至于DEMO里这段代码为什么第一次执行Console.WriteLine如此耗能,我想如果你认真看了《CLR via C#》的第一章就应该能知道答案了。

当然你还可以点击层次结构图标,查看更加直观的性能损耗,就像下面这样。

结语

ANTS Performance Profiler是我性能调优时最先使用也是最喜欢使用的工具,所以放在了第一篇文章里来分享给大家,希望能给各位带来点帮助。

它非常的直观、强大,因为手头复杂的项目不适合用来做DEMO,所以只是写了段简单的代码作演示,它的强大之处还待你真正遇到性能问题使用它时去好好体会。

文章有所疏漏和要补充的,请留言一起讨论,也请关注后续的相关文章。

如果文章对你有点帮助,推荐一下吧,谢谢 :)

时间: 2024-11-03 11:19:43

.NET性能调优之一:ANTS Performance Profiler的使用介绍_实用技巧的相关文章

关于VS2012自带的 性能分析 工具使用实例(图文介绍)_实用技巧

本篇通过一小段代码的console程序来进行性能的分析以及改进.直到后面的改进前.改进后性能比较结果. 先看console代码(源代码下载): 复制代码 代码如下: static void Main(string[] args)        {            int i = 10000;            while(i-->0)            {                Core c=new  Core();                c.Process(Dat

ASP.NET性能优化之让浏览器缓存动态网页的方法_实用技巧

OutputCache是针对所有访问服务器资源的用户,本篇要介绍的浏览器缓存则是针对单个用户,让浏览器在我们的控制下彻底不持续访问服务器上的动态内容,也就是我们要让浏览器变成我们的缓存机制中的一部分,在某些特定的场景下最大化地提升ASP.NET站点的性能.如果说OutputCache是从广度上提升并发效率,则浏览器缓存是从深度上提升效率. 一:HTTP头简介 1.1浏览器第一次请求 假设我们请求一个URL地址,譬如我服务器上的一个静态页面http://192.168.0.77/luminji2/

ASP.NET 性能优化之反向代理缓存使用介绍_实用技巧

到目前为止,我们讨论了把缓存存放在ASP.NET的输出缓存中(内存和硬盘),以及浏览器缓存中,而大型站点的另一种常用做法是将缓存部署在反向代理服务器上,这类缓存我们通常称之为反向代理缓存,比如Squid和Varnish.这两款软件通常都部署在非WINDOWS平台上,对于Windows平台上的Asp.net来说,其实一样能使用,我们完全可以把反向代理软件部署在LINUX上,然后代理会路由到后台的WINDOWS WEB(IIS)服务器.总之,非WINDOWS的世界很精彩. 当然,无论是squid还是

使用Performance Advisor对C/C++应用程序进行性能调优

在本教程中,Mike Kucera 将带您领略 Performance Advisor 的主要功能,并向您展示如何提高示例应用程序的性能. IBM® Rational® Developer for Power Systems Software V8.5 引入了一个名为 Performance Advisor 的新组件,这个新组件提供了一组丰富的特性,用于性能调优 IBM® AIX® 和 IBM® PowerLinux 上的 C++ 和 C++ 应用程序. Performance Advisor

使用 Shark 来对你的 iPhone 应用进行性能调优(Using Shark to Performance Tune Your iPhone App)

使用 Shark 来对你的 iPhone 应用进行性能调优(Using Shark to Performance Tune Your iPhone App) 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,

性能调优攻略

关于性能优化这是一个比较大的话题,在<由12306.cn谈谈网站性能技术>中我从业务和设计上说过一些可用的技术以及那些技术的优缺点,今天,想从一些技术细节上谈谈性能优化,主要是一些代码级别的技术和方法.本文的东西是我的一些经验和知识,并不一定全对,希望大家指正和补充. 在开始这篇文章之前,大家可以移步去看一下以前发表的<代码优化概要>,这篇文章基本上告诉你--要进行优化,先得找到性能瓶颈!但是在讲如何定位系统性能瓶劲之前,请让我讲一下系统性能的定义和测试,因为没有这两件事,后面的定

【Xamarin挖墙脚系列:应用的性能调优】

原文:[Xamarin挖墙脚系列:应用的性能调优] 官方提供的工具:网盘地址:http://pan.baidu.com/s/1pKgrsrp 官方下载地址:https://download.xamarin.com/profiler/profiler-windows.msi Xamarin Profiler,使用此工具,帮助我们进行软件性能的调优,找到应用的瓶颈. 内存占用较高的代码调用进行监视.快速解决影响程序性能的代码.   关于此工具的使用,请参见: https://developer.xa

Java性能调优工程的几点建议

2016年8月,由极客邦.InfoQ和听云联合主办 APMCon 2016 中国应用性能管理大会上,Java性能调优专家Monica Beckwith进行了<Java性能调优必读守则>(原题目:Java Performance Engineer's Survival Guide)的演讲.演讲中,Monica给出关于Java调优最佳实践的个人建议:怎样设定需要调优的性能要求.需要对哪些指标进行分析.目标设定后又怎样具体地开展调优. Monica Beckwith专注于企业级应用中Java虚拟机和

Java程序性能调优的基本知识和JDK调优

一 基本知识 1.1 性能是什么 在性能调优之前,我们首先来了解一下性能是什么?关于性能,我想每个学习过Java的人都能列出几点,甚至可以夸夸其谈.在<Java TM Platform Performance>一书中,定义了如下五个方面来作为评判性能的标准: 1) 运算的性能--哪一个算法的执行性能最好? 2) 内存的分配--程序运行时需要耗费多少内存? 3) 启动的时间--程序启动需要多长时间?这在Web项目中的影响不大,但要注意部分程序需要部署或运行在客户端时的情形(比如applet程序)