你在使用。net程序时使用过哪些分析器,你特别推荐哪一个?


当前回答

最近我一直在测试Telerik的《JustTrace》,尽管它离成品还有一段距离,但他们正在朝着正确的方向前进。

其他回答

我想添加yourkit java和。net profiler,我喜欢它的java,但还没有尝试过。net版本。

不要忘记nProf -一个非常好的免费分析器。

对我来说,SpeedTrace是市场上最好的工具,因为它不仅能帮助您找到应用程序中的瓶颈。它还可以帮助你在故障排除场景中找到为什么你的应用程序崩溃,你的安装没有安装,你的应用程序挂起,你的应用程序性能有时很差取决于数据输入,例如,识别缓慢的db事务。

我还要补充一点,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工作得很好,差异是无价的。

我在一个大型的c#应用程序中发现了很多问题。

通常情况下,问题发生在启动或关机过程中,因为正在加载插件,并且正在创建、销毁、序列化或反序列化大数据结构。它们通常不止一次地被创建和初始化,并且更改处理程序被添加了多次,这进一步加剧了问题。

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