什么是好的。net分析器?

你在使用。net程序时使用过哪些分析器,你特别推荐哪一个?

330598 次浏览

我以前跟红门的侧写师合作过。帮我完成了任务。

我一直在为WinForms和控制台应用程序使用JetBrains dotTrace(尚未在ASP.net上测试),它工作得相当好:

他们最近还增加了“个人许可证”,比企业许可证便宜得多。不过,如果有人知道一些更便宜甚至免费的,我也想听听:-)

蚂蚁分析器。我用过的不多,但我对ANTS并没有什么抱怨。可视化真的很有帮助。

不要忘记nProf -一个非常好的,免费的分析器。

我最近发现了EQATEC分析器http://www.eqatec.com/tools/profiler。它适用于大多数。net版本和许多平台。它易于使用,部分内容是免费的,即使用于商业用途也是如此。

AutomatedQA AQTime用于计时,科技MemProfiler用于内存。

在过去,我使用了附带Visual Studio团队系统的分析器。

我广泛地使用了JetBrains dotTraceRedgate蚂蚁。它们在功能和价格上相当相似。它们都提供有用的性能分析和相当基本的内存分析。

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吧。

不幸的是,我尝试过的大多数分析器在与尾部调用一起使用时都失败了,尤其是ANTS。我只能自己写。CodeProject上有一个简单的实现,您可以将其用作基础。

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

它可以很好地跟踪。net应用程序内存不足的原因。

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

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

我怀疑Visual Studio Team System自带的分析器是不是最好的分析器,但我发现它在很多情况下已经足够好了。除了维密所提供的,你还需要什么?

编辑:不幸的是,它只在VS团队系统中可用,但如果你有机会,它值得一试。

我发现dotTrace分析器 by JetBrains是一个很好的分析工具。net和他们的ASP。NET模式就是质量。

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

能够在bug修复或增强之前和之后运行一个分析会话,然后比较结果是非常有价值的,特别是对于一个庞大的遗留的。net应用程序(就像我的情况),性能从来都不是优先考虑的,而且查找瓶颈可能非常乏味。做前后的差异可以让你看到更改每个方法的调用计数更改每个方法的持续时间

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

总结:dotTrace工作得很好,差异是无价的。

我在一个使用的大型c#应用程序中发现了很多问题。

通常情况下,问题发生在启动或关机过程中,因为正在加载插件,并且正在创建、销毁、序列化或反序列化大数据结构。它们通常不止一次地被创建和初始化,并且更改处理程序被添加了多次,这进一步加剧了问题。

在这种情况下,程序可能非常缓慢,以至于只有2个样本就足以确定错误的方法/函数/属性调用位点。

最新版本的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内存分析器的共同特征

  • 实时分析功能
  • 他们的网站上有优秀的教学视频
  • 使用方便
  • 合理的性能(明显比没有附加分析器时慢,但不至于让你感到沮丧)
  • 显示泄漏对象的实例
  • 基本上他们都做得很好

蚂蚁

  • 一键过滤查找常见泄漏包括:仅由事件处理程序保持活动的对象,已释放但仍然活动的对象,以及仅由已释放对象的引用保持活动的对象。这可能是ANTS的杀手锏——正因为如此,发现漏洞的速度非常快。根据我的经验,大多数泄漏都是由于未解除事件处理程序而引起的,而ANTS只是直接将您带到这些对象。太棒了。
  • 对象保留图。虽然在Scitech中可以获得相同的信息,但在ANTS中更容易解释。
  • 除了对象本身的大小之外,还显示子对象的大小(但只在不幸地选择了实例时,而不是在整个类列表中)。
  • 更好地集成到Visual Studio(右键单击图形跳转到文件)

Scitech .NET内存分析器

  • 显示分配对象时的堆栈跟踪。真的对于分配在很多不同位置的对象非常有用。使用ANTS很难确定泄漏对象是在哪里创建的。
  • 显示未处理的一次性对象的计数。虽然这并不表明存在泄漏,但它确实提供了修复此问题的机会,并通过更快的垃圾收集提高应用程序性能。
  • 更详细的筛选选项(可以单独筛选几个列)。
  • 显示创建的全部对象的信息(包括那些垃圾收集的对象)。ANTS只显示“实时”对象统计。这使得分析和调优整体应用程序性能(例如。确定在哪里不必要地创建了许多对象,而这些对象不一定是泄漏的)。

总的来说,我认为ANTS可以帮助您更快地找到泄漏的内容,而Scitech则提供了关于您的整体应用程序内存性能和单个对象的更多细节,一旦您知道要查看哪些内容(例如。创建时的堆栈跟踪)。如果在ANTS中添加了对未处理的一次性对象的堆栈跟踪和跟踪,我认为没有必要使用其他任何东西。

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

我必须给你带来一个神奇的工具,我曾经用过。AVICode拦截器工作室。在我以前的公司,我们使用这个奇妙的工具来配置web应用程序(这应该是世界上最大的单一网络应用程序,也是有史以来最大的民用IT项目)。在这个伟大工具的帮助下,性能团队创造了奇迹。这是一个痛苦的配置,但这是一个一次性的活动,我想说这是值得的时间。详细信息请签出这个页面

< p >谢谢, 詹姆斯。< / p >

我想添加yourkit java和。net分析器,我喜欢它的java,虽然还没有尝试过。net版本。

对我来说,SpeedTrace是市场上最好的工具,因为它不仅能帮助您找到应用程序中的瓶颈。它还可以帮助你在故障排除场景中找到为什么你的应用程序崩溃,你的安装没有安装,你的应用程序挂起,你的应用程序性能有时很差取决于数据输入,例如,识别缓慢的db事务。

如果你正在寻找一些快速、简单和免费的东西,http://code.google.com/p/slimtune/似乎可以很好地完成这项工作。

NuMega True Time分析器由Micro Focus在DevPartner Studio中运行。它为. net应用程序提供了行和方法级别的细节,只需要pdb,不需要源代码(但它很有帮助)。它可以使用我们专有的每线程内核模式计时驱动程序区分算法繁重的例程和具有较长I/O等待的例程。版本10.5将于2011年2月4日发布,提供新的64进程支持。我在DevPartner生产线上工作。在http://www.DevPartner.com上跟进10.5发布的消息。

免责声明:我是microfocus开发伙伴的产品经理。

[完整披露]

虽然还不像这里列出的其他一些。net内存分析器那样功能齐全,但市场上有一个名为JustTrace的新入口。它是由Telerik制作的,它的主要目标是让所有类型的应用(web/Silverlight/桌面)的跟踪/分析更容易、更快。

如果你曾经发现使用其他工具进行分析和优化令人生畏或缓慢,那么JustTrace可能值得一看。

最近我一直在测试Telerik的《JustTrace》,尽管它离成品还有一段距离,但他们正在朝着正确的方向前进。

我们公司为。net选择了YourKit Profiler,因为它是性价比最高的(价格vs功能)。对于一个想要拥有灵活许可(浮动许可)的小公司来说,这是一个完美的选择——当时ANTS是开发人员座位挂坠盒。

此外,它还为我们提供了附加到正在运行的进程的能力,这是dotTrace所不能做到的。注意,虽然附加不是最好的选择,因为所有的。net程序都会变慢,但这是分析由其他进程启动的。net应用程序的唯一方法。 在功能方面,ANTS和dotTrace更好——但最终YourKit已经足够好了

如果许可是一个问题,您可以尝试WINDBG进行内存分析

如果你是ASP。你可以尝试MVCMiniProfiler (http://benjii.me/2011/07/using-the-mvc-mini-profiler-with-entity-framework/)