.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操作系统的兴趣,以及对底层知识的强烈欲望,因此整理了这篇文章. ...
随机推荐
- Android适应方案汇总(三)
在Android适应方案汇总(一个).(两)在.我们理解一些基本概念. 那么详细的开发,我们应该重视起来. 首先,我们需要知道.关键的事实是,这两个适配器: (1).这点在单位的使用上用dp.sp以及 ...
- 栈实现java
栈是一种“先去后出”的抽象的数据结构.例如:我们在洗盘子的时候,洗完一个盘子,将其放在一摞盘子的最上面,但我们全部洗完后,要是有盘子时,我们会先从最上面的盘子开始使用,这种例子就像栈的数据结构一样,先 ...
- VS2010程序打包操作
摘录:http://www.cnblogs.com/daban/archive/2012/06/27/2565449.html 1. 在vs2010 选择“新建项目”----“其他项目类型”-- ...
- Android 内存泄漏优化汇总
android内存泄漏优化摘要 博客分类: android android内存溢出OutOfMemoryError . android移动应用程序的内存分配一般是8凯瑟琳约,不正确地假定处理内存处理非 ...
- RH033读书笔记(4)-Lab 5 File Permissions
Lab 5 File Permissions Sequence 1: Determining File Permissions 1. What is the symbolic representati ...
- 华为编程大赛汇总----java
以下华为编程比赛题目都是网上整理得到的,代码都是自己调试过的,由于网上java答案较少,欢迎大家批评指正,也希望对准备华为上机的童鞋们有一点点帮助.在练习的过程中成长,加油!~~ 1. ...
- 《数据结构、算法及应用》9.(C++实施订单)
最近阅读<数据结构.算法及应用>这本书,书中的习题汇总,用自己的方法来实现这些问题.可能效率.等方面存在着非常多的问题,也可能是错误的实现.假设大家在看这本书的时候有更优更好的方法来实现, ...
- Python 显示LinkedIn用户作业
CODE: #!/usr/bin/python # -*- coding: utf-8 -*- ''' Created on 2014-8-18 @author: guaguastd @name: j ...
- 基本介绍LINUX远程PC软件:PUTTY、SecureCRT、X-Manager
***********************************************声明************************************************ 原创 ...
- Myeclipse它显示了一个目录的结构,而不是包
今天Myeclipse新project,编写代码,查找workspace空间展示project在包装和class所有平行结构,看的很不顺,有两个原因,第一,您可能无法切换到Package worksp ...