关于.net:那里有任何体面的C#profilers?

关于.net:那里有任何体面的C#profilers?

Any decent C# profilers out there?

我需要一个C型轮廓仪。

虽然我不反对支付一个,但一些免费或至少试用版的东西是理想的,因为它需要时间来提出一个采购订单。

有什么建议吗?


一年半前,我在一个大型的C项目中使用了蚂蚁剖析器。它的表现真的很好,它的成本,甚至超过了一些更昂贵的竞争对手。

它以几乎一行一行的分辨率计算成本。


您可以尝试以下操作:

  • NPOF(免费,但有点老)
  • profilesharp(开源)
  • .NET内存探查器(非常适合内存泄漏,有试用版)

编辑:nprof已被slimtune替换,并与.NET 4.0应用程序一起使用。


eqatec分析器非常好,完全免费。它易于设置和使用,而且似乎不会给应用程序增加太多开销。我今天刚开始使用它,已经发现了一些瓶颈,否则我不会发现。


JetBrains的dottrace被广泛使用。

PatrickSmacchia的出色的ndepend非常适合提供静态分析。


我在sharptoolbox.com上维护了一个.NET的概要文件列表。

您将在那里找到这里和更多建议的工具,每个工具都有一个简短的描述。


有趣的是,没有人提到在Visual Studio的高端版本中有一个——我一直发现这对于执行分析来说已经足够好了。对于内存分析,我使用已经提到过的内存分析器,但这不是我通常所说的"分析器"。

你想做什么样的分析?


我们在我工作的地方使用蚂蚁分析器。它以简单的方式提供非常详细的信息。


我们使用.NET内存分析器。它有点难看,但对于寻找悬而未决的参考资料非常有用。

我最初尝试过Red Gate的Ants Profiler,它非常性感,但从内存泄漏的角度来看,它很糟糕,原因如下:

1)速度慢得离谱。让应用程序进入状态开始录制需要半个小时(在没有红色门的情况下需要20秒)。

2)红门需要在自己的工具上运行自己的工具。当我完成两个快照时,它使用了900MB的内存!然后它崩溃了:(

然而,红门蚂蚁的时间成分令人印象深刻。只需不必费心使用内存分析器,除非您要处理的是一个小规模的应用程序。


我用的是AQTime,它从未让我失望。我肯定有试用版。


我要第二个红门的蚂蚁剖析器。我用它来跟踪一些真正令人不安的性能问题,它非常容易使用(低学习曲线),并以一种易于理解的方式提供了很好的、详细的数据。价格标签值这个价,但不是免费的…


目前发布的SharpDevelop(3.1.1)有一个很好的集成分析器。它的速度相当快,并且很好地融入了Sharpdevelopment IDE及其Nunit Runner。结果以灵活的树/列表样式显示(使用LINQ创建自己的选择)。双击显示的方法直接跳到源代码中。


我在.NET内存分析器方面很幸运


Patrick Smacchia's awesome NDepend is
excellent for providing static
analysis.

我会彻底推荐ndepend用于静态分析,但请注意,您可能需要留出一两天时间来实际分析它提供的大量信息,并找出所有统计数据在代码方面的实际含义。


eqatec profiler在这里完成了任务。


现在不要使用它们,我的一个朋友对蚂蚁剖析器赞不绝口。我知道这是一种付费产品,不知道有多贵。如果您碰巧为MVP工作,您可能能够利用它免费获得许可证。


这里是aqtime(性能和内存)或ants(v4性能分析器或v5 beta内存分析器)。


我昨天找到了.NET内存分析器,我必须说我对它印象很深。我今天要订驾照。


虽然分析内存使用情况不太好,但在某些版本的Visual Studio中包含的探查器在分析执行速度方面做得非常好。


你的目标是什么?

您的目标是定位特定的语句并大致了解它们对总执行时间的贡献,这样您就可以找到不同的方法来执行它们了吗?

为此,我用这种方法发誓。


推荐阅读