什么是一些好的.NET分类器?

您使用.net程序时使用了哪些性能分析器,您会特别推荐哪些性能分析器?


我广泛使用了JetBrains dotTrace和Redgate ANTS。 它们在功能和价格上非常相似。 它们都提供了有用的性能分析和相当基本的内存分析。

dotTrace与Resharper集成在一起,这非常方便,因为您可以通过单击IDE从单元测试中分析性能。 然而,dotTrace通常似乎会产生虚假结果(例如说一种方法需要花费几年才能运行)

我更喜欢ANTS呈现分析结果的方式。 它向您显示源代码并在每行的左侧告诉您运行需要多长时间。 dotTrace只是有一个树形视图。

EQATEC分析器非常基本,需要您编译组件的特殊仪器版本,然后才能在EQATEC分析器中运行。 但是,它是免费的。

总的来说,我更喜欢ANTS进行性能分析,但如果您使用Resharper,那么dotTrace的集成是一个杀手级的功能,它意味着它在可用性方面优于ANTS。

免费的Microsoft CLR Profiler(.Net框架2.0 / .Net Framework 4.0)是.NET内存分析所需的全部功能。

2011更新:

Scitech内存分析器有一个相当基本的用户界面,但有很多有用的信息,包括有关非托管内存的一些信息,dotTrace和ANTS缺乏 - 如果您正在进行COM互操作,您可能会发现它很有用,但是我还没有找到任何使得COM内存问题容易诊断 - 通常你必须打开windbg.exe

蚂蚁探查器在过去的几年中出现了突飞猛进的发展,其内存分析器具有一些真正有用的功能,现在推测它已经超越了dotTrace,作为我估计的一个软件包。 我很幸运能够拥有两者的许可证,但是如果您打算购买一台兼容性能和内存的.Net profiler,请将其设置为ANTS。


其他人已经介绍了性能分析,但关于内存分析,我目前正在评估Scitech .NET Memory Profiler 3.1和ANTS Memory Profiler 5.1(截至2009年9月的最新版本)。 我在一两年前尝试过JetBrains,并且它不如ANTS(用于记忆分析),所以我没有打扰过这次。 从阅读网站看来,它没有与其他两个相同的内存分析功能。

蚂蚁和赛特内存分析器都具有其他功能,所以最好取决于您的偏好。 一般而言,Scitech提供更详细的信息,而ANTS则确定泄漏物体的真实难以置信。 总的来说,我更喜欢ANTS,因为它很快识别可能的泄漏。

以下是我的经验中主要的优点和缺点:

ANTS和Scitech .NET内存分析器的共同特点

  • 实时分析功能
  • 在他们的网站上出色的指导视频
  • 使用方便
  • 合理的性能(显然比没有安装Profiler要慢,但不会太多,你会感到沮丧)
  • 显示泄漏对象的实例
  • 基本上他们都做得很好
  • 蚂蚁

  • 一键式过滤器可以发现常见的泄漏,包括:仅由事件处理程序保持活动状态的对象,处置但仍处于活动状态的对象以及仅通过来自处置对象的引用保持活动状态的对象。 这可能是ANTS的杀手锏 - 因为这个原因,发现泄漏的速度非常快。 根据我的经验,大部分泄漏事件都是由事件处理程序不能脱钩引起的,而ANTS只是直接引导这些对象。 真棒。
  • 对象保留图。 虽然Scitech提供了相同的信息,但在ANTS中解释要容易得多。
  • 除了对象本身的大小以外,还显示儿童的大小(但仅在不幸选择了实例时,不在整个班级列表中)。
  • 更好地集成到Visual Studio(右键单击图形跳转到文件)
  • Scitech .NET内存分析器

  • 在分配对象时显示堆栈跟踪。 这对于在很多不同位置分配的对象非常有用。 使用ANTS时,很难准确确定泄漏物体的创建位置。
  • 显示未处理的一次性物品的数量。 尽管没有泄漏的迹象,但确实有机会解决这个问题,并通过更快的垃圾收集来提高应用程序的性能。
  • 更详细的过滤选项(几列可以独立过滤)。
  • 提供有关创建的所有对象的信息(包括收集的垃圾)。 蚂蚁只显示'活'的对象统计。 这使分析和调整整体应用程序性能变得更加容易(例如,识别不必要地创建的许多对象不一定会泄漏)。
  • 总而言之,我认为ANTS可以帮助您更快地发现泄漏的情况,而一旦您知道要查看什么内容(例如创建时的堆栈跟踪),赛特就会提供关于整体应用程序内存性能和单个对象的更多细节。 如果堆栈跟踪和未处理的一次性物体的跟踪添加到蚂蚁,我不会看到需要使用其他任何东西。


    我最近发现了EQATEC Profiler http://www.eqatec.com/tools/profiler。 它适用于大多数.NET版本和一些平台。 它很容易使用,而且它的一部分是免费的,即使是商业用途。

    链接地址: http://www.djcxy.com/p/40339.html

    上一篇: What Are Some Good .NET Profilers?

    下一篇: Does gprof support multithreaded applications?