有没有像样的 C# 分析器? [关闭]
Posted
技术标签:
【中文标题】有没有像样的 C# 分析器? [关闭]【英文标题】:Any decent C# profilers out there? [closed] 【发布时间】:2008-08-14 03:52:55 【问题描述】:我需要一个 C# 分析器。
虽然我不反对付费,但免费的或至少有试用版的东西会是理想的,因为它需要时间来提高采购订单。
有什么建议吗?
【问题讨论】:
What Are Some Good .NET Profilers?的可能重复 它说了很多关于 SO 审查问题的原因是它“可能引发辩论”。 【参考方案1】:一年半前,我在一个大型 c# 项目中使用了Ants profiler。它的成本确实非常好,甚至超过了一些更昂贵的竞争对手。
它以几乎逐行的分辨率计算成本。
【讨论】:
我也喜欢蚂蚁。它来自 Redgate。【参考方案2】:您可以尝试以下方法:
nprof(免费但有点旧) ProfileSharp(开源) .Net Memory Profiler(真的很适合内存泄漏,有试用版)编辑: Nprof 已替换为 SlimTune 并适用于 .Net 4.0 应用程序
【讨论】:
我玩过 ProfileSharp。这绝对是可怕的。 nprof 我认为只有 .Net 1.1。如果您可以编译到 .Net 1.1,那么分析它然后重新编译到 .Net 2 以进行发布可能仍然有用。但是,如果您开始使用 .Net2 功能(例如泛型和可空类型),则这是不可能的。 同意 Matthew,ProfileSharp 很糟糕,即使是最简单的命令行 exe 也无法对其进行分析。不要浪费你的时间 nprof 的开发最近似乎有所回升。 我使用 .Net Memory Profiler 来查找内存泄漏;这是相当不错。它得到了我的认可!【参考方案3】:EQATEC profiler 非常好,完全免费。它易于设置和使用,并且似乎不会给应用程序增加太多开销。我今天才开始使用它,并且已经发现了一些我不会发现的瓶颈。
【讨论】:
商业许可证不是免费的(但仍然很便宜,200 美元)。 是的,看起来他们已经更改了最新版本的许可,并开始对商业用途收费。不过,我仍然强烈推荐它。 更新 - 他们似乎再次更改了许可条款,使其免费用于标准 .NET 应用程序(但不是 CF 或 Silverlight)的商业用途 许可条款在 3.6 版中再次发生变化:它现在对所有平台免费,包括 CF 和 Silverlight,但对可检测的 DLL 数量有限制一个会话。 不再免费,已被 Telerik 买断 :(【参考方案4】:JetBrains 的dotTrace 被广泛使用。
Patrick Smacchia 的 NDepend 非常适合提供静态分析。
【讨论】:
dotTrace 确实是一款出色的分析器,非常易于使用。 dotTrace 3.1 不适用于 .NET 4。我们必须等待 dotTrace 4.0。 作为更新,dotTrace 4 Performance 和 dotTrace 3.5 Memory 都支持 .NET 4。【参考方案5】:我在 SharpToolbox.com 上维护了一个全面的 list of profilers for .NET。
您会在此处找到建议的工具以及更多工具,每个工具都附有对其建议内容的简短说明。
【讨论】:
这似乎过时了(redgate 条目相当陈旧) 哈利,谢谢你指出这一点。所有 RedGate 产品的信息现在都是最新的。 sharptoolbox.com/authors/red-gate-software【参考方案6】:有趣的是,没有人提到在 Visual Studio 的高端版本中有一个 - 我一直发现它足以用于执行分析。对于内存分析,我使用已经提到的 Memory Profiler,但 不是 我通常将其描述为“分析器”。
您想要进行什么样的分析?
【讨论】:
【参考方案7】:我们在我工作的地方使用Ants profiler。它以简单的方式提供了非常详细的信息。
【讨论】:
【参考方案8】:我们使用.NET Memory Profiler。它有点难看,但对于查找悬空引用非常有用。
我最初尝试了Red Gate's ANTS profiler,这很性感,但从内存泄漏的角度来看,它很糟糕,原因如下:
1) 它的速度慢得离谱。让应用程序进入开始录制状态需要半个小时(没有红门需要 20 秒)。
2) Red Gate 需要在自己的工具上运行自己的工具。当我完成两张快照时,它正在使用 900MB 的内存!然后它崩溃了:(
然而,Red Gate ANTS 的计时组件令人印象深刻。只是不要打扰内存分析器,除非您正在处理一个琐碎(占用空间小)的应用程序。
【讨论】:
你试过v4吗?现在全面好多了:)【参考方案9】:我使用过 AQtime,它从未让我失望过。我确定有试用版。
【讨论】:
AQTime 比 ANT 有一个巨大的优势,因为它支持非托管代码。【参考方案10】:我会第二个red gate's ANTS profiler。我用它来追踪一些真正令人不安的性能问题,它使用起来非常简单(学习曲线低),并且以易于理解的方式呈现了漂亮、详细的数据。价格标签是值得的,但它不是免费的......
【讨论】:
【参考方案11】:Patrick Smacchia 的出色 NDepend 是 非常适合提供静态 分析。
我会彻底推荐 NDepend 进行静态分析,但请注意,您可能需要花一两天时间来实际分析它提供的大量信息,并弄清楚所有统计数据的实际含义就您的代码而言。
【讨论】:
【参考方案12】:我对 .NET 内存分析器很幸运
【讨论】:
【参考方案13】:EQATEC 分析器在这里完成了这项工作。
【讨论】:
【参考方案14】:SharpDevelop (3.1.1) 的当前版本有一个很好的集成分析器。它非常快,并且很好地集成到了 SharpDevelop IDE 及其 NUnit 运行器中。结果以灵活的树/列表样式显示(使用 LINQ 创建您自己的选择)。双击显示的方法直接跳转到源代码。
【讨论】:
【参考方案15】:目前不使用它们,我的一个朋友对 Ants profiler 赞不绝口。我知道它是一种付费产品,不知道有多贵。如果您碰巧配备了 MVP,您也许可以利用它免费获得许可证。
【讨论】:
你能提供更多关于整个 MVP 的细节吗?谢谢, MVP 获得了免费的 redgate 产品许可证,如果您的团队中有 MVP 的人使成本成为非问题,这是一个让您进入的漏洞。 你有描述这个漏洞以及如何利用它的链接吗?【参考方案16】:此处为 AQTime(性能和内存)或 ANTS(v4 性能分析器或 v5 beta 内存分析器)。
【讨论】:
【参考方案17】:我昨天找到了.NET Memory Profiler,我必须说我对它印象深刻。 我今天要订购许可证。
【讨论】:
【参考方案18】:虽然不能很好地分析内存使用情况,但某些版本的 Visual Studio 中包含的分析器在分析执行速度方面做得非常好。
【讨论】:
访问 VS2010 分析器的一种方法是,在加载解决方案后,从“调试”菜单中找到“开始性能分析”。它的功能的详细信息在msdn.microsoft.com/query/…【参考方案19】:你的目标是什么?
您的目标是定位特定语句并大致了解它们对您的总执行时间的影响,以便您找到不同的方法吗?
For that, I swear by this method.
【讨论】:
以上是关于有没有像样的 C# 分析器? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
在哪里可以找到要在 Visual Studio 2008 中使用的 C# 应用程序的分析器? [关闭]