你在使用。net程序时使用过哪些分析器,你特别推荐哪一个?
当前回答
最新版本的ANTS内存分析器(我认为它是5)简直太棒了!!我使用WinDbg和SOS来解决泄漏,因为它被证明是最好的方法,然后我尝试了ANTS,几分钟就搞定了。真是一个很棒的软件。
其他回答
我以前跟红门的侧写师合作过。帮我完成了任务。
我一直在使用JetBrains dotTrace用于WinForms和控制台应用程序(尚未在ASP.net上测试),它工作得很好:
他们最近还增加了“个人许可证”,比企业许可证便宜得多。不过,如果有人知道一些更便宜甚至免费的,我也想听听:-)
我还要补充一点,dotTrace区分内存和性能跟踪会话的能力绝对是无价的(ANTS可能也有内存差异特性,但我没有看到性能差异)。
能够在bug修复或增强之前和之后运行一个分析会话,然后比较结果是非常有价值的,特别是对于一个庞大的遗留的。net应用程序(就像我的情况),性能从来都不是优先考虑的,而且查找瓶颈可能非常乏味。执行前后差异可以查看每个方法的调用计数变化和每个方法的持续时间变化。
This is helpful not only during code changes, but also if you have an application that uses a different database, say, for each client/customer. If one customer complains of slowness, you can run a profiling session using their database and compare the results with a "fast" database to determine which operations are contributing to the slowness. Of course there are many database-side performance tools, but sometimes I really helps to see the performance metrics from the application side (since that's closer to what the user's actually seeing).
总结:dotTrace工作得很好,差异是无价的。
别忘了很棒的scitech .net内存分析器
它可以很好地跟踪。net应用程序内存不足的原因。
我广泛使用JetBrains dotTrace和Redgate ANTS。它们在功能和价格上相当相似。它们都提供有用的性能分析和相当基本的内存分析。
dotTrace与Resharper集成在一起,这非常方便,因为您可以在IDE中单击一下就可以分析单元测试的性能。然而,dotTrace似乎经常给出虚假的结果(例如,说一个方法运行了好几年)
我更喜欢ANTS呈现分析结果的方式。它向您显示源代码,并在每行的左边告诉您运行所需的时间。dotTrace只有一个树视图。
EQATEC分析器非常基本,需要编译程序集的特殊仪器版本,然后可以在EQATEC分析器中运行。然而,它是免费的。
总的来说,我更喜欢ANTS的性能分析,尽管如果你使用Resharper,那么dotTrace的集成是一个杀手级特性,意味着它在可用性上击败了ANTS。
免费的微软CLR分析器(。Net framework 2.0 / .Net framework 4.0)是.Net内存分析所需要的全部。
2011年更新:
Scitech内存分析器有一个相当基本的UI,但有很多有用的信息,包括一些关于非托管内存的信息,这是dotTrace和ANTS所缺乏的——如果你正在做COM互操作,你可能会发现它很有用,但我还没有找到任何分析器,使COM内存问题易于诊断——你通常必须打开windbg.exe。
在过去的几年中,ANTS分析器得到了飞速的发展,它的内存分析器有一些真正有用的特性,在我看来,这些特性使它在包方面领先于dotTrace。我很幸运,这两种工具我都有许可证,但是如果你打算同时购买一个性能和内存方面的。net分析器,那就买ANTS吧。
推荐文章
- 在c#中从URI字符串获取文件名
- 检查SqlDataReader对象中的列名
- 如何将类标记为已弃用?
- c# 8支持。net框架吗?
- Linq-to-Entities Join vs GroupJoin
- 为什么字符串类型的默认值是null而不是空字符串?
- 在list中获取不同值的列表
- 组合框:向项目添加文本和值(无绑定源)
- AutoMapper:“忽略剩下的?”
- 如何为ASP.net/C#应用程序配置文件值中的值添加&号
- 从System.Drawing.Bitmap中加载WPF BitmapImage
- 如何找出一个文件存在于c# / .NET?
- 为什么更快地检查字典是否包含键,而不是捕捉异常,以防它不?
- [DataContract]的命名空间
- string. isnullorempty (string) vs. string. isnullowhitespace (string)