C# 哪些是好的.NET分析器?

C# 哪些是好的.NET分析器?,c#,.net,profiling,profiler,C#,.net,Profiling,Profiler,您在使用.net程序时使用了哪些探查器,您特别推荐哪一种?我以前使用过RedGate的探查器。为我做了这项工作。我一直在使用WinForms和Console应用程序(尚未在ASP.net上测试),它运行得非常好: 他们最近还增加了一种“个人许可证”,比公司许可证便宜得多。不过,如果有人知道一些更便宜甚至是免费的,我也想听听:-)。我用的不多,但我对蚂蚁并没有什么抱怨。可视化真的很有帮助。别忘了-一个非常好的免费档案器。我最近发现了EQATEC档案器。它适用于大多数.NET版本和一系列平台。它易于

您在使用.net程序时使用了哪些探查器,您特别推荐哪一种?

我以前使用过RedGate的探查器。为我做了这项工作。

我一直在使用WinForms和Console应用程序(尚未在ASP.net上测试),它运行得非常好:


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

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

别忘了-一个非常好的免费档案器。

我最近发现了EQATEC档案器。它适用于大多数.NET版本和一系列平台。它易于使用,部分内容免费,即使用于商业用途。

用于计时和内存。

过去,我使用过随附的探查器。

我已经广泛使用过。它们在功能和价格上相当相似。它们都提供了有用的性能评测和非常基本的内存评测

dotTrace与Resharper集成,这非常方便,因为您只需从IDE单击一下就可以分析单元测试的性能。然而,dotTrace似乎经常给出虚假的结果(例如,说一个方法运行了几年)

我更喜欢ANTS显示分析结果的方式。它向您显示源代码,在每行的左边告诉您运行所需的时间。dotTrace只有一个树状视图

是非常基本的,需要编译程序集的特殊检测版本,然后可以在EQATEC profiler中运行。然而,它是免费的

总的来说,我更喜欢使用ANTS进行性能评测,尽管如果使用Resharper,那么dotTrace的集成是一个杀手级功能,意味着它在可用性方面胜过ANTS

免费的Microsoft CLR分析器(/)是.NET内存评测所需的全部

2011年更新:

有一个非常基本的UI,但有很多有用的信息,包括dotTrace和ANTS缺少的一些非托管内存信息-如果您正在进行COM互操作,您可能会发现它很有用,但我还没有找到任何可以使COM内存问题易于诊断的探查器-您通常必须中断
windbg.exe


在过去的几年中,ANTS profiler取得了突飞猛进的发展,它的内存分析器有一些真正有用的特性,在我看来,这些特性使它超越了dotTrace。我很幸运能同时拥有这两个方面的许可证,但如果您打算购买一个用于性能和内存的.Net探查器,那就让它成为ANTS吧。

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

用于快速采样

不要忘记这项了不起的科学技术


它非常适合跟踪.net应用程序内存不足的原因

是合理的,但有一点学习曲线,不像内置的团队套件那么容易使用

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

我怀疑Visual Studio Team System附带的探查器是否是最好的探查器,但我发现它在很多情况下都足够好。除了VS提供的服务外,您还需要什么


编辑:不幸的是,它仅在VS团队系统中可用,但如果您有权访问它,则值得查看

我发现by是一个优秀的.NET评测工具,他们的ASP.NET模式是高质量的。

我要补充的是,dotTrace能够区分内存和性能跟踪会话是非常宝贵的(ANTS可能也有内存差异功能,但我没有看到性能差异)

能够在bug修复或增强之前和之后运行分析会话,然后比较结果是非常有价值的,特别是对于庞大的遗留.NET应用程序(如我的案例),在这个应用程序中,性能从来都不是优先考虑的,而查找瓶颈可能非常繁琐。执行前后差异允许您查看每个方法调用计数的变化,以及每个方法持续时间的变化

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


一句话:dotTrace工作得很好,而且差异非常宝贵。我在使用大型C#应用程序时发现了很多问题

问题通常发生在插件加载、大数据结构创建、销毁、序列化或反序列化的启动或关闭过程中。通常会多次创建和初始化它们,并且会多次添加更改处理程序,从而进一步加剧问题


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

最新版本的ANTS memory profiler(我认为它是5个)简直太棒了!!!我使用WinDbg和SOS来解决漏洞,因为这是以前最好的方法,然后我尝试了ANTS,几分钟后就成功了。真是一款很棒的软件。

其他人已经介绍了性能评测,但是关于内存评测 我目前正在评估这两个Scite