什么是一些好的.NET Profiler?

时间:2020-03-05 18:38:08  来源:igfitidea点击:

在使用.net程序时,我们使用了哪些分析器?特别推荐我们使用哪些分析器?

解决方案

回答

我过去曾与RedGate的探查器一起工作过。为我做了工作。

回答

我一直在使用JetBrains dotTrace for WinForms和Console Apps(尚未在ASP.net上进行测试),并且运行良好:

他们最近还添加了"个人许可证",该许可证比公司许可证便宜得多。不过,如果有人知道一些便宜的甚至免费的东西,我也想听听:-)

回答

ANTS Profiler。我并没有使用很多,但是我对ANTS并没有任何抱怨。可视化真的很有帮助。

回答

不要忘记nProf是一款非常出色的免费软件探查器。

回答

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

回答

自动化的QA AQTime用于计时,SciTech MemProfiler用于存储器。

回答

过去,Ive使用了Visual Studio Team System附带的探查器。

回答

我已经广泛使用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年更新:

Scitech内存探查器具有相当基本的UI,但是有很多有用的信息,包括dotTrace和ANTS缺少的一些有关非托管内存的信息,如果我们正在进行COM互操作,可能会发现它很有用,但是我还没有找到任何可构成COM内存的探查器容易诊断的问题我们通常必须破解windbg.exe

在过去的几年中,ANTS探查器取得了突飞猛进的发展,它的内存探查器具有一些真正有用的功能,据我估计,它现在已经超越了dotTrace。我很幸运地获得了两者的许可证,但是如果我们要购买一个同时具有性能和内存性能的.Net分析器,请将其设置为ANTS。

回答

不幸的是,我尝试使用的大多数探查器在与尾部调用一起使用时均失败了,最著名的是ANTS。我刚写完自己的书。在CodeProject上有一个简单的实现,可以用作基础。

回答

英特尔? VTune?性能分析器用于快速采样

回答

别忘了很棒的scitech .net内存分析器

这对于跟踪.net应用程序内存不足的原因非常有用。

回答

AQTime是合理的,但是有一些学习曲线,并且不像Team Suite中内置的那样容易使用

回答

我自己还没有尝试过,但也许是dotTrace?他们的ReSharper应用程序肯定是一个很好的应用程序。也许dotTrace也是:)

回答

我怀疑Visual Studio Team System附带的探查器是否是最好的探查器,但是我发现它在许多场合都足够好。除了VS提供的功能以外,我们还需要什么?

编辑:不幸的是,它仅在VS Team System中可用,但是如果我们可以访问它,则值得签出。

回答

我发现JetBrains的dotTrace Profiler是.NET的出色分析工具,它们的ASP.NET模式质量很高。

回答

我要补充一点,dotTrace的差异内存和性能跟踪会话的能力绝对是无价的(ANTS也可能具有内存差异功能,但我看不到性能差异)。

能够在漏洞修复或者增强之前和之后运行性能分析会话,然后比较结果是非常有价值的,尤其是对于庞大的传统.NET应用程序(例如,在我的案例中),性能从来都不是优先考虑因素,并且可能会发现瓶颈非常乏味。进行前后差异比较后,我们可以查看每种方法的调用计数变化和每种方法的持续时间变化。

这不仅在代码更改期间很有用,而且如果应用程序使用不同的数据库,例如对于每个客户/客户,这也很有用。如果一个客户抱怨速度缓慢,则可以使用他们的数据库运行性能分析会话,并将结果与​​"快速"数据库进行比较,以确定哪些操作导致速度缓慢。当然,有许多数据库方面的性能工具,但有时我确实可以从应用程序方面查看性能指标(因为这更接近用户实际看到的内容)。

底线:dotTrace效果很好,并且差异非常宝贵。

回答

在使用此功能的大型Capp中,我发现了很多问题。

通常,问题是在启动或者关闭过程中发生,因为正在加载插件,并且正在创建,销毁,序列化或者反序列化大数据结构。通常,它们多次创建和初始化,并且更改处理程序被添加多次,从而使问题更加复杂。

在这种情况下,该程序可能非常缓慢,以至于只有两个样本足以确定有罪的方法/功能/属性调用位置。

回答

最新版本的ANTS内存分析器(我认为是5)简直是摇摇欲坠!!!我一直在使用WinDbg和SOS来解决泄漏问题,因为事实证明这是最好的方法,然后我尝试了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的共同功能

  • 实时分析功能
  • 他们网站上的优秀操作视频
  • 便于使用
  • 性能合理(显然比没有安装分析器时要慢,但不会让我们感到沮丧)
  • 显示泄漏对象的实例
  • 基本上他们俩都做得很好

蚂蚁

  • 一键式过滤器可查找常见的泄漏,包括:仅由事件处理程序保持活动的对象,已处置但仍处于活动状态的对象以及仅由来自处置对象的引用保持活动的对象。这可能是ANTS的杀手级功能-因此,发现泄漏的速度非常快。以我的经验,大多数泄漏是由于事件处理程序未被释放而引起的,而ANTS只是直接带我们进入这些对象。惊人的。
  • 对象保留图。尽管Scitech中提供了相同的信息,但在ANTS中解释起来要容易得多。
  • 除了对象本身的大小外,还显示带有子项的大小(但仅在不幸地选择了实例时才显示,而不是在整个类列表中)。
  • 更好地集成到Visual Studio(在图形上单击鼠标右键以跳转到文件)

Scitech .NET内存分析器

  • 在分配对象时显示堆栈跟踪。这对于在许多不同位置分配的对象非常有用。使用ANTS很难准确确定泄漏对象的创建位置。
  • 显示未处置的一次性物品的数量。虽然不能表示存在泄漏,但它确实可以更快地进行垃圾回收,从而找到了解决此问题并提高应用程序性能的机会。
  • 更详细的过滤选项(几个列可以独立过滤)。
  • 显示有关已创建的对象总数的信息(包括收集的那些垃圾)。 ANTS仅显示"实时"对象统计信息。这使分析和调整整体应用程序性能变得更加容易(例如,确定不必要创建的许多对象不一定泄漏的位置)。

概括地说,我认为ANTS可以更快地发现泄漏的内容,而Scitech一旦知道了要查看的内容(例如,创建时的堆栈跟踪),就会提供有关整体应用程序内存性能和单个对象的更多详细信息。如果将堆栈跟踪和未处理的可丢弃对象的跟踪添加到ANTS,我将看不到需要使用其他任何东西。

回答

当前版本的SharpDevelop(3.1.1)具有不错的集成分析器。它非常快,并且可以很好地集成到SharpDevelop IDE及其NUnit运行器中。结果以灵活的树/列表样式显示(使用LINQ创建自己的选择)。双击显示的方法将直接跳至源代码。

回答

我必须带给我一个令人惊奇的工具,我曾用过一段时间。 AVICode Interceptor Studio。在我以前的公司中,我们使用了这个出色的工具来描述Web应用程序(这应该是世界上最大的Web应用程序,也是有史以来最大的民用IT项目)。表演团队在这个宏伟的工具的帮助下创造了奇迹。配置它很痛苦,但这是一次性的活动,我会说值得。请查看此页面以获取详细信息。

谢谢,
詹姆士

回答

我想添加yourkit java和.net profiler,我很喜欢Java,但是还没有尝试.NET版本。

回答

对我而言,SpeedTrace是市场上最好的工具,因为它不仅可以发现应用程序内部的瓶颈。它还可以解决各种情况,以查明应用程序崩溃的原因,未安装安装程序,应用程序挂起,有时应用程序性能不佳(取决于数据输入),例如识别缓慢的数据库事务。

回答

如果我们正在寻找快速,简单且免费的工具,http://code.google.com/p/slimtune/似乎可以正常工作。