.NET性能调优之一:ANTS Performance Profiler的使用-阿里云开发者社区

开发者社区> 达摩院法师> 正文

.NET性能调优之一:ANTS Performance Profiler的使用

简介: .NET性能调优系列文章 系列文章索引 .NET性能调优之一:ANTS Performance Profiler的使用 .NET性能调优之二:使用Visual Studio进行代码度量 .NET性能调优之三:YSlow相关规则的调优工具和方法 在使用.NET进行快速地上手与开发出应用程序后,接下来面临的问题可能就是程序性能调优方面的问题,而性能调优有时候会涉及方方面面的问题,如程序宿主系统、数据库、网络环境等等,而当程序异常庞大复杂的时候,性能调优将变得更加无从下手。
+关注继续查看

.NET性能调优系列文章

系列文章索引

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

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

ANTS Performance Profiler的基本使用

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

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

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

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

 1 static void Main()
 2 {
 3     var list = new List<int>();
 4 
 5     var sum = 0;
 6     for (var i = 0; i < 10000; i++)
 7     {
 8         sum += i;
 9         list.Add(i);
10     }
11     Console.WriteLine(sum);
12 
13     //find the value use linq: 1000
14     var result = list.Where(p => p.Equals(1000));
15     foreach (var i in result)
16     {
17         Console.WriteLine(i);
18     }
19     Console.ReadKey();
20 }

编译程序后,启动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#》的第一章就应该能知道答案了。

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

这样的层次结构图还有一个好处就是可以看到.NET Framework的内部实现。

当进行一些决策,比如是用原生的功能还是第三方组件时,这个功能会变得非常好用,因为通过它能比较直观的地看到内部实现的性能瓶颈在哪里。

结语

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

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

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

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


作者:Parry
出处:http://www.cnblogs.com/parry/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
ASP.NET性能优化之文件同步
Microsoft同步工具SyncToy http://www.cnblogs.com/daizhj/archive/2009/11/03/1595395.html http://www.cnblogs.
619 0
使用cProfile等工具来提高python的执行速度
众所周知,python相较于其它语言速度较慢,但是我们可以通过优化的方法来提升效率。
8635 0
.NET性能调优之三:YSlow相关规则的调优工具和方法
.NET性能调优系列文章 系列文章索引 .NET性能调优之一:ANTS Performance Profiler的使用 .NET性能调优之二:使用Visual Studio进行代码度量 .NET性能调优之三:YSlow相关规则的调优工具和方法 1.YSlow简介 在这篇文章里来谈谈web前端的相关优化,主要遵从YSlow规则,具体的规则意义在YSlow的23条规则描述里已经描述的很清楚,不再赘述,那么这里主要来探讨下如何针对部分规则进行相关调优。
1129 0
sql server 性能调优 资源等待之网络I/O
原文:sql server 性能调优 资源等待之网络I/O 一.概述    与网络I/O相关的等待的主要是ASYNC_NETWORK_IO,是指当sql server返回数据结果集给客户端的时候,会先将结果集填充到输出缓存里(ouput cache),同时网络层会开始将输出缓存里的数据打包,由客户端接收。
973 0
83
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载