您在使用.net程序时使用了哪些分析器,您会特别推荐哪些?
#1楼
我广泛使用了JetBrains dotTrace和Redgate ANTS 。 它们在功能和价格上非常相似。 它们都提供有用的性能分析和非常基本的内存分析。
dotTrace与Resharper集成,这非常方便,因为您只需单击一下IDE即可分析单元测试的性能。 然而,dotTrace似乎经常会产生虚假的结果(例如说一个方法需要花费几年的时间才能运行)
我更喜欢ANTS呈现分析结果的方式。 它向您显示源代码,每行左侧显示运行所需的时间。 dotTrace只有树视图。
EQATEC分析器非常基础,需要您编译程序集的特殊检测版本,然后可以在EQATEC分析器中运行。 然而,它是免费的。
总的来说,我更喜欢ANTS进行性能分析,但如果你使用Resharper,那么dotTrace的集成是一个杀手级功能,意味着它在可用性方面胜过ANTS。
免费的Microsoft CLR Profiler( .Net framework 2.0 / .Net Framework 4.0 )是.NET内存分析所需的全部内容。
2011年更新:
Scitech内存分析器有一个非常基本的UI,但有很多有用的信息,包括dotTrace和ANTS缺少的非托管内存的一些信息 - 如果你正在进行COM互操作,你可能会发现它很有用,但我还没有找到任何使COM成为的分析器内存问题易于诊断 - 您通常必须打破windbg.exe
。
ANTS分析器在过去几年中实现了跨越式发展,其内存分析器具有一些真正有用的功能,现在它已经超越了dotTrace作为我估计的一个包。 我很幸运能获得两者的许可证,但是如果你要为性能和内存购买一个.Net探测器,那就把它变成ANTS吧。
#2楼
不幸的是,当我使用尾部调用时,我试过的大多数剖析器都失败了,最明显的是ANTS。 我最后写了自己的。 CodeProject上有一个简单的实现,您可以将其用作基础。
#3楼
英特尔®VTune™性能分析器 ,可快速采样
#4楼
最新版本的ANTS内存分析器(我认为它是5)只是摇滚! 我使用WinDbg和SOS困扰着泄漏,因为事实证明它是最好的方式,然后我尝试了ANTS,我在几分钟内就得到了它。 真的是一个很棒的软件。
#5楼
其他人已经介绍了性能分析,但在内存分析方面,我目前正在评估Scitech .NET Memory Profiler 3.1和ANTS Memory Profiler 5.1(截至2009年9月的当前版本)。 我一年或两年前尝试过JetBrains,它不如ANTS(用于内存分析)那么好,所以这次我没有打扰过。 从阅读网站看起来它没有与其他两个相同的内存分析功能。
ANTS和Scitech内存分析器都具有另一个没有的功能,因此最好取决于您的偏好。 一般来说,Scitech提供更详细的信息,而ANTS在识别泄漏对象时真的令人难以置信。 总的来说,我更喜欢ANTS,因为它可以快速识别可能的泄漏。
以下是我的经验中各自的优缺点:
ANTS和Scitech .NET Memory Profiler的共同特征
- 实时分析功能
- 在他们的网站上优秀的操作视频
- 使用方便
- 合理的性能(明显慢于没有附加分析器,但没有那么多你变得沮丧)
- 显示泄漏对象的实例
- 基本上他们都做得很好
蚂蚁
- 一键式过滤器可以找到常见的泄漏,包括:仅由事件处理程序保持活动的对象,处置但仍处于活动状态的对象以及仅通过来自已处置对象的引用保持活动的对象。 这可能是ANTS的杀手级特征 - 因此发现泄漏的速度非常快。 根据我的经验,大多数泄漏是由事件处理程序没有解开而引起的,ANTS只是直接带你到这些对象。 真棒。
- 对象保留图。 虽然Scitech提供相同的信息,但在ANTS中解释起来要容易得多。
- 除了对象本身的大小外,还显示包含子项的大小(但仅在不幸地选择实例时,而不是在整个类列表中)。
- 更好地集成到Visual Studio(右键单击图形以跳转到文件)
Scitech .NET Memory Profiler
- 分配对象时显示堆栈跟踪。 这对于在许多不同位置分配的对象非常有用。 使用ANTS很难确定泄漏对象的确切位置。
- 显示未处理的一次性物体的数量。 虽然没有表明泄漏,但它确实找到了解决此问题的机会,并通过更快的垃圾收集提高了应用程序性能。
- 更详细的过滤选项(可以独立过滤多个列)。
- 提供有关创建的总对象的信息(包括收集的垃圾)。 ANTS仅显示“实时”对象统计信息。 这使得分析和调整整体应用程序性能变得更加容易(例如,识别不必要地创建大量不一定泄漏的对象的位置)。
总而言之,我认为ANTS可以帮助您更快地找到泄漏的内容,而Scitech会在您知道要查看的内容(例如,创建时的堆栈跟踪)后提供有关整体应用程序内存性能和单个对象的更多详细信息。 如果堆栈跟踪和跟踪未处置的一次性对象被添加到ANTS我不会看到需要使用其他任何东西。
来源:oschina
链接:https://my.oschina.net/stackoom/blog/3167012