在使用.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”,启动程序。
498)this.width=498;'' onmousewheel = ''javascript:return big(this)'' alt="" src="/uploadfile/201301/12/B0123235461.png" />
分析结果的查看与分析
软件的基本工作原理是在.NET编译出的IL代码里放入钩子用来记录时间,然后通过直观的界面显示出哪部分代码耗能最大。所以这是性能调优最直接的方法,针对最耗时的代码段进行优化即可。
点击“Start Profiling”后启动之前编译的程序,软件开始执行,如果是其他交互程序如winform、web等,操作完需要进行性能调优的功能后,在顶部的运行时间轴里用鼠标选定需要查看的时间段即可,一般有性能问题的时间段会出现一个波峰,选定那个时间段即可。
498)this.width=498;''