.net程序调用检测和性能分析工具——DotTrace
DotTrace可以对.net程序进行性能监测,对正在运行的程序和网站监控,主要界面如下:

需要将该工具安装在程序运行的服务器上。

主要用到这个视图,显示了每个方法的时间,下面是反编译出来的代码。
PS:
市面上有很多性能的Profiler工具,AQ Time,ANTS Profiler,Speed Trace Profiler.但是分析的原理跟方法论基本都是一致的。以分析IIS的web程序为例,在dotTrace中启动Profiler,它会重新启动 IIS,Attach到进程中(IIS5为aspnet_wp.exe),然后运行需要分析的程序,Get Snapshot,然后我们就可以得到一个分析的结果。关键的问题是,我们如何利用结果迅速的找到性能瓶颈。
1.Hot Spots视图。这个视图根据耗时从大到小排序了所有的方法。我们可以马上发现耗时最长的方法。总共有两种情况:
1.1该方法被调用次数非常少,但是非常耗时。这时马上得出结论,该方法就是性能瓶颈。记录下来,分析代码。
1.2该方法被调用次数很多。此时就需要使用另一个视图:Back Trees
2.Back Trees视图。这个视图通常是用来分析一个被调用很多次的函数的Callee,因为一般来说,一个函数被调用多次,一般是在某一个Callee中有一个 循环或者递归 ,而性能调优的入口是这个Callee函数,而不是被调用者本身。(其实Hot Spots本身也是Back Tree,只是我们可以单独把一个函数在一个Tab页中开打,然后使用Back Tree单独分析)
3.Plain List视图。有时候,我们会发现,在Hot Spots里会出现很多系统函数,比方Linq的操作,这时如果函数太多,也许对定位不方便。这时可以使用 Plan List 视图,它只显示过滤以后的函数,然后根据Own Time进行排序,找出耗时最长的函数。但是,如果一个耗时的函数都没发现,就很有可能是由于资源的操作导致性能下降,比如循环调用Linq操作,或者发 送邮件一直等待等原因。
4.Call Tree视图。在dotTrace中,Call Tree中的每一个函数的子函数并不是按照调用顺序来排列的,而是根据耗时百分比来排列的。(如 果要查看函数的子函数执行顺序,在Plain List中查看)。这样的话我们可以快速的定位到下一个Important Call,并且dotTrace还提供了快捷键ctrl+shift+->(右箭头)。但是Call Tree视图对于分析有个不好的地方,就是某个函数也许会在不同的分支被循环调用,这时使用Call Tree是非常难发现的,这也是Back Tree存在的意义。
另外,dotTrace4.0还有远程调试的功能,这对于调试集成环境应该是很有用的。
补:我看到CSDN有朋友说,dotTace跟踪Windows From的程序发现子函数加起来的时间跟远小于父函数的时间,那是因为dotTrace的过滤功能, 只要点击百分数前面的小图标“unfold filtered calls”,就能把所有过滤掉的函数显示出来。实际上,该朋友碰到的情况是,dotTrace过滤掉了Application.Run()函数调用的消 息循环函数RunMessageLoop。
.net程序调用检测和性能分析工具——DotTrace的更多相关文章
- .NET 11 个 Visual Studio 代码性能分析工具
原文地址 软件开发中的性能优化对程序员来说是一个非常重要的问题.一个小问题可能成为一个大的系统的瓶颈.但是对于程序员来说,通过自身去优化代码是十分困难的.幸运的是,有一些非常棒的工具可以帮助程序员进行 ...
- 11 个 Visual Studio 代码性能分析工具
软件开发中的性能优化对程序员来说是一个非常重要的问题.一个小问题可能成为一个大的系统的瓶颈.但是对于程序员来说,通过自身去优化代码是十分困难的.幸运的是,有一些非常棒的工具可以帮助程序员进行代码分析和 ...
- VS2010自带的性能分析工具分析.NET程序的性能
这篇博文给大家分享的是,如何使用VS自带的性能分析工具来分析我们编写的.NET程序,一边找出程序性能的瓶颈,改善代码的质量.在实际开发中,性能真的很重要,往往决定一个产品的生死~良好的用户体验的基础之 ...
- Java 性能分析工具 , 第 3 部分: Java Mission Control
引言 本文为 Java 性能分析工具系列文章第三篇,这里将介绍如何使用 Java 任务控制器 Java Mission Control 深入分析 Java 应用程序的性能,为程序开发人员在使用 Jav ...
- Java 性能分析工具 , 第 2 部分:Java 内置监控工具
引言 本文为 Java 性能分析工具系列文章第二篇,第一篇:操作系统工具.在本文中将介绍如何使用 Java 内置监控工具更加深入的了解 Java 应用程序和 JVM 本身.在 JDK 中有许多内置的工 ...
- 11个Visual Studio代码性能分析工具
软件开发中的性能优化对程序员来说是一个非常重要的问题.一个小问题可能成为一个大的系统的瓶颈.但是对于程序员来说,通过自身去优化代码是十分困难的.幸运的是,有一些非常棒的工具可以帮助程序员进行代码分析和 ...
- Linux 性能分析工具汇总合集
出于对Linux操作系统的兴趣,以及对底层知识的强烈欲望,因此整理了这篇文章.本文也可以作为检验基础知识的指标,另外文章涵盖了一个系统的方方面面.如果没有完善的计算机系统知识,网络知识和操作系统知识, ...
- [转]Linux性能分析工具汇总合集
出于对Linux操作系统的兴趣,以及对底层知识的强烈欲望,因此整理了这篇文章.本文也可以作为检验基础知识的指标,另外文章涵盖了一个系统的方方面面.如果没有完善的计算机系统知识,网络知识和操作系统知识, ...
- 超全整理!Linux性能分析工具汇总合集
转自:http://rdc.hundsun.com/portal/article/731.html?ref=myread 出于对Linux操作系统的兴趣,以及对底层知识的强烈欲望,因此整理了这篇文章. ...
随机推荐
- 为Linux用ISO制作U盘启动及基本原理
制作成功后的基本最简文件夹文件图 一.系统的基本引导流程: 首先系统要引导isolinux.bin可执行程序,此程序是移动介质上引导用的,isolinux.bin执行成功后会载入其配置文件syslin ...
- 十步完全理解SQL(转)
本文由 伯乐在线 - 水果泡腾片 翻译.未经许可,禁止转载!英文出处:Lukas Eder.欢迎加入翻译组. 很多程序员视 SQL 为洪水猛兽.SQL 是一种为数不多的声明性语言,它的运行方式完全不同 ...
- 在VC/MFC中嵌入Google地图——图文并茂
近期须要实验室须要将在无人机地面站中嵌入地图,在网上找了非常多资料,最终有些眉目了, 首先.做这个须要用到的知识有.MFC控件.MFC类库.JavaScript脚本语言.Google API.Goog ...
- 程序员之---C语言细节22(函数返回指针注意事项<悬空指针>、查看进程能够分配的内存大小)
主要内容:函数返回指针注意事项<悬空指针>.查看进程能够分配的内存大小 #include <stdio.h> char * favorite_fruit() { static ...
- 使用CSS如何悬停背景颜色变色 onmouseover、onmouseout
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- MVC与三层架构
我们平时总是将三层架构与MVC混为一谈,殊不知它俩并不是一个概念.下面我来为大家揭晓我所知道的一些真相. 首先,它俩根本不是一个概念. 三层架构是一个分层式的软件体系架构设计,它可适用于任何一个项目. ...
- Sliverlight之 特效
1,OpacityMask控件的部分渐隐(见Project16) (1) 控件的OpacityMask有什么作用 说明:设置所选区域不透明度的画笔,一般结合LinearGradientBrush或Ra ...
- jsp简单练习-简单的下拉表单
<%@ page contentType="text/html; charset=gb2312" %> <html> <body> <fo ...
- Quartz CronTrigger运用
CronTrigger配置格式: 格式: [秒] [分] [小时] [日] [月] [周] [年] 序号 说明 是否必填 同意填写的值 同意的通配符 1 秒 是 0-59 , - ...
- li排序
html <ul id="ul1"> <li>9</li> <li>2</li> <li>7</li& ...