Answers:
我已经广泛使用JetBrains dotTrace和Redgate ANTS。它们在功能和价格上都非常相似。它们都提供有用的性能分析和相当基本的内存分析。
dotTrace与Resharper集成在一起,这非常方便,因为您可以通过一次单击IDE来配置单元测试的性能。但是,dotTrace似乎经常给出虚假的结果(例如,说一种方法要花几年时间才能运行)
我更喜欢ANTS呈现概要分析结果的方式。它显示了源代码,每行的左侧告诉您运行了多长时间。dotTrace只是具有树视图。
EQATEC探查器是非常基本的,需要您编译程序集的特殊检测版本,然后可以在EQATEC探查器中运行。但是,它是免费的。
总的来说,我更喜欢使用ANTS进行性能分析,尽管如果您使用Resharper,则dotTrace的集成是一项杀手级功能,意味着它在可用性方面优于ANTS。
.NET内存配置文件只需要免费的Microsoft CLR Profiler(.Net Framework 2.0 / .Net Framework 4.0)。
2011年更新:
在赛特内存分析器具有相当基本的UI,但很多有用的信息,包括对非托管内存一些资料,dotTrace和蚂蚁缺乏-你可能会发现它有用,如果你正在做的COM互操作,但我还没有找到,使得COM的任何事件探查内存问题很容易诊断-通常必须解决windbg.exe
。
在过去的几年中,ANTS探查器取得了突飞猛进的发展,其内存探查器具有一些真正有用的功能,据我估计,它现在已经超越了dotTrace。我很幸运地获得了两者的许可证,但是如果您要购买一个同时具有性能和内存性能的.Net分析器,请将其设为ANTS。
其他人已经介绍了性能分析,但是关于内存分析, 我目前正在评估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的共同功能
蚂蚁
Scitech .NET内存分析器
概括地说,我认为ANTS可以帮助您更快地发现泄漏的内容,而Scitech一旦知道了要查看的内容(例如,创建时的堆栈跟踪),就会提供有关整体应用程序内存性能和单个对象的更多详细信息。如果将堆栈跟踪和对未处理的一次性物品的跟踪添加到了ANTS,我将看不到需要使用其他任何东西。
我最近发现了EQATEC Profiler http://www.eqatec.com/tools/profiler。它适用于大多数.NET版本和许多平台。它易于使用,并且部分内容是免费的,甚至用于商业用途。
[ 全部披露 ]
尽管还不如此处列出的其他.NET内存分析器功能齐全,但市场上有一个名为JustTrace的新产品。它是由Telerik制作的,其主要目标是使对所有类型的应用程序(Web / Silverlight / Desktop)的跟踪/性能分析变得更加容易和快捷。
如果您发现使用其他工具进行的分析和优化令人生畏或速度缓慢,那么JustTrace可能值得一看。
不要忘记nProf-一款非常出色的免费软件探查器。
我发现JetBrains的dotTrace Profiler是.NET的出色分析工具,它们的ASP.NET模式质量很高。
ANTS Profiler。我并没有使用很多,但是我对ANTS并没有任何抱怨。可视化真的很有帮助。
自动化的QA AQTime用于计时,SciTech MemProfiler用于存储器。
如果您正在寻找快速,简单且免费的工具,http://code.google.com/p/slimtune/似乎可以正常工作。
我一直在使用JetBrains dotTrace for WinForms和Console Apps(尚未在ASP.net上进行测试),并且运行良好:
他们最近还添加了“个人许可证”,该许可证比公司许可证便宜得多。不过,如果有人知道一些便宜的甚至免费的东西,我也想听听:-)
我要补充一点,dotTrace的差异内存和性能跟踪会话的能力绝对是无价的(ANTS也可能具有内存差异功能,但是我没有看到性能差异)。
能够在漏洞修复或增强之前和之后运行性能分析会话,然后对结果进行比较非常有价值,尤其是对于庞大的传统.NET应用程序(例如,在我的案例中),性能从来都不是优先考虑因素,并且可能会发现瓶颈非常乏味。进行前后差异比较后,您可以查看每种方法的调用计数变化和每种方法的持续时间变化。
这不仅在代码更改期间很有用,而且如果您的应用程序使用不同的数据库(例如对于每个客户/客户),也很有用。如果一个客户抱怨速度缓慢,则可以使用他们的数据库运行性能分析会话,并将结果与“快速”数据库进行比较,以确定哪些操作导致速度缓慢。当然,有许多数据库方面的性能工具,但有时我确实可以帮助您从应用程序方面查看性能指标(因为这更接近用户实际看到的内容)。
底线:dotTrace效果很好,并且差异非常宝贵。
过去,我曾使用Visual Studio Team System附带的探查器。
当前版本的SharpDevelop(3.1.1)具有不错的集成分析器。它非常快,并且可以很好地集成到SharpDevelop IDE及其NUnit运行器中。结果以灵活的树/列表样式显示(使用LINQ创建自己的选择)。双击显示的方法将直接跳至源代码。
我怀疑Visual Studio Team System附带的探查器是否是最好的探查器,但是我发现它在许多场合都足够好。除了VS提供的功能之外,您还需要什么?
编辑:不幸的是,它仅在VS Team System中可用,但是如果您可以访问它,则值得签出。
我最近一直在测试Telerik的JustTrace,尽管距离成品还很遥远,但他们的方向是正确的。
NuMega True Time事件探查器由Micro Focus保留在DevPartner Studio中。它为仅需要PDB的.NET应用程序提供行和方法级别的详细信息,而无需任何源代码(但有帮助)。它可以使用我们专有的每线程内核模式定时驱动程序来区分算法繁琐的例程和I / O等待时间长的例程。10.5版在2011年2月4日提供了新的64进程支持。无耻的插件:我在DevPartner产品线上工作。跟进 http://www.DevPartner.com,以了解有关10.5发布的新闻。
免责声明:我是Micro Focus的DevPartner产品经理。
我们选择了.NET中的YourKit Profiler for .NET,因为它具有最高的性价比(价格与功能)。对于想要拥有灵活许可(浮动许可)的小型公司而言,这是一个完美的选择-当时的ANTS曾是开发人员席位。
此外,它还为我们提供了附加到运行过程的功能,这是dotTrace无法实现的。请注意,虽然连接不是最佳选择,因为.NET会减慢所有速度,但这是分析其他进程启动的.NET应用程序的唯一方法。在功能方面,ANTS和dotTrace更好-但最终YourKit足够好。