有没有好用的C#性能分析工具?

83

我需要一个C#分析器。

虽然我不反对付费,但免费或至少有试用版本的工具会更理想,因为开具采购订单需要时间。

有什么推荐的吗?


5
可能是.NET Profilers有哪些好的推荐?的重复问题。 - BlueRaja - Danny Pflughoeft
这说明了Stack Overflow的很多问题都会引发争议,以至于有时需要对问题进行审查。 - Glenn Maynard
19个回答

40

一年半前,我在一个大型C#项目中使用了Ants性能分析工具。它的性价比非常好,甚至比一些更昂贵的竞争对手表现得更好。

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


1
我也喜欢 ANTS。它来自 Redgate。 - Marcel

35
你可以尝试以下方式:

编辑: Nprof已被SlimTune替代并可用于 .Net 4.0应用程序


7
我玩过 ProfileSharp。它真的很糟糕。 - Matthew Ruston
1
nprof只支持 .Net 1.1版本。如果你可以编译成 .Net 1.1,那么使用它进行性能分析,再重新编译成 .Net2版本发布仍然是有用的。但是,如果你开始使用 .Net2的一些新特性,如泛型和可空类型,则无法这样做。 - redcalx
1
同意Matthew的说法,ProfileSharp太糟糕了,甚至无法对最简单的命令行exe进行分析。别浪费时间了。 - Michael Dausmann
最近nprof的开发似乎有所加强。 - Brian Ortiz
1
我使用了 .Net Memory Profiler 来查找内存泄漏,它非常好。它得到了我的认可! - Cylon Cat
那个ProfileSharp的网站看起来像是垃圾邮件。 - Nick Heiner

32

EQATEC分析器非常好用,而且完全免费。它易于设置和使用,并且似乎不会给应用程序增加太多负担。我今天刚开始使用它,已经发现了几个我原本无法发现的瓶颈。


3
更新 - 看起来他们又改变了许可条款,使标准的.NET应用程序可以免费商业使用(但不包括CF或Silverlight)。 - HullCitySteve
3
许可条款在3.6版中再次更改:现在所有平台都可以免费使用,包括CF和Silverlight,在一个会话中仅限于可插入的DLL数量。 - Richard Flamsholt
同意,它也非常易于使用。 - Anders Rune Jensen
我尝试了Equatec和RedGate Ants两种工具。但是我没有找到Ants的功能可以显示每行代码的使用时间。是否有一些隐藏设置可以查看代码行呢? - Offler
3
不再免费,并已被Telerik收购 :( - pingoo
显示剩余3条评论

29

JetBrains的dotTrace被广泛使用。

Patrick Smacchia出色的NDepend非常适合提供静态分析。


1
dotTrace 真的是一款非常优秀的性能分析工具,使用起来非常简单。 - Stefan Monov
dotTrace 3.1无法与.NET 4兼容。我们必须等待dotTrace 4.0的发布。 - Bobby Cannon
1
更新一下,dotTrace 4性能和dotTrace 3.5内存都支持.NET 4。 - Jura Gorohovsky

11
我在SharpToolbox.com上维护了一个全面的.NET分析器列表,包括这里推荐的工具和更多其他工具,每个工具都有一个简短的描述。请访问此链接

这似乎已经过时了(Redgate 条目相当陈旧)。 - Andrew Harry
Harry,感谢您指出这一点。现在所有RedGate产品的信息都是最新的。 http://sharptoolbox.com/authors/red-gate-software - Fabrice

7
我们在工作中使用Ants性能分析器。它以简单明了的方式提供非常详细的信息。

7

有趣的是,没有人提到 Visual Studio 的高端版本中有一个 - 我一直觉得它足以进行执行分析。对于内存分析,我使用已经被提到过的 Memory Profiler,但它并不是我通常描述的“分析器”。

您想做什么样的分析?


6
我们使用.NET Memory Profiler。它看起来有点丑陋,但对于查找悬空引用非常有用。
我最初尝试了Red Gate's ANTS profiler,它非常性感,但从内存泄漏的角度来看,它有以下缺点:
1)它非常慢。将应用程序置于开始记录状态需要半个小时(不使用red-gate只需20秒)。
2)Red Gate需要在其自己的工具上运行自己的工具。在完成两个快照时,它就使用了900MB的内存!然后崩溃了:(
但是,Red Gate ANTS的定时组件令人印象深刻。除非您处理小型应用程序,否则不要费心使用内存分析器。

2
你尝试过两个版本的v4吗?现在它全面改进了很多 :) - thecoop

4

我曾使用过 AQtime,从未让我失望。我相信有试用版本可供使用。


AQTime相对于ANTS的巨大优势在于它支持非托管代码。 - Rick Minerich

3

我赞同使用红门的ANTS分析器。我已经用它来解决了一些非常棘手的性能问题,使用起来非常简单(学习曲线低),并以易于理解的方式呈现了详细的数据。虽然需要付费,但价格是值得的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接