在哪里可以找到要在Visual Studio 2008中使用的C#应用​​程序的分析器?

时间:2009-05-26 18:02:41

标签: c# visual-studio-2008 profiling

我正在为在Visual Studio 2008中开发的C#应用​​程序寻找一个分析器。我正在寻找价格低廉(开源是首选)的东西,它可以集成到VS2008中。我找到了Visual Studio Profiler,但我不知道如何使用它。我安装了Stand Alone版本,它取决于Visual Studio(我猜不是单独使用?)但是在工具菜单中没有任何内容显示出来,就像它们的说法一样。

8 个答案:

答案 0 :(得分:11)

以下是开源.Net profilers的列表。

我曾经使用并喜欢红门的Ants-Profiler,但确实需要花钱(非常值得,恕我直言)。

答案 1 :(得分:6)

Visual Studio Profiler仅是Team System的一部分。它不包含在Visual Studio Professional中。

有一个名为nprof的免费.NET分析器,但它尚未发布,而且可能相当不稳定。此外,还有一些优秀的商业分析师,如ANTS Profiler from Red Gate;但是,这些都不是低成本。

答案 2 :(得分:5)

免费查看EQATEC profiler,效果很好。也适用于ASP.NET和.NET CF。

答案 3 :(得分:4)

我的建议是dotTrace。不是免费的,个人许可证的价格是170欧元。

http://www.jetbrains.com/profiler/index.html

答案 4 :(得分:3)

我使用AQtime取得了巨大成功。

正如已经提到的,ANTS也是一个不错的选择。

答案 5 :(得分:2)

如果您只是想进行内存分析,.NET Memory Profiler非常好。这是一个试用期和之后的小成本 - 非常值得。如果你想花一些钱,DevPartner Studio非常好。

答案 6 :(得分:1)

this stackoverflow thread中对.NET的分析器进行了一些讨论。我曾经使用了CLR Profiler一些,它帮助我以前处理过软件中的一些性能问题。值得一试。 Microsoft已发布a guide on how to use the CLR Profiler

答案 7 :(得分:1)

对于性能调优,与内存诊断相反,有一个simple way to do it

这是违反直觉的,但你所要做的就是在IDE下运行程序,虽然它很慢,但要多次暂停,检查调用堆栈,看看为什么它正在做它正在做的事情。机会非常好,多个样本会显示它可以消除你做的事情。节省的时间大致等于包含您修复的代码的样本分数。

它“快而又脏”,但与大多数剖析器不同,它指出了需要注意的实际语句,而不仅仅是包含它们的函数。它还可以通过修复它们直接粗略估计您可以预期的加速比。它不会被递归混淆,并且它避免了调用树的难度,即任何分支中的问题可能都很小,但是通过分布在许多分支上可能很大。

我拿了几个样本N,通常不超过20个。如果有一个热点或一个流氓方法在堆栈中间调用,取执行时间的一小部分F,那么显示它的样本数是NF + - sqrt(NF(1-F)。例如,如果N = 20且F = 0.15,则显示它的样本数为3 + - 1.6,因此我很有可能找到它。

通常F更像是0.5,因此显示它的样本数量是10 + - 2.2,因此不会错过。

请注意,这与代码的速度或运行频率完全无关。如果优化它将节省一定的时间百分比,这将决定样本的百分比将为您显示。

通常有多个地方需要优化。如果问题1的F1 = 0.5,问题2的F2 = 0.1,那么如果你修复问题1(程序的速度加倍),那么F2通常会增加到该因子,为0.2。所以你可以再做一次,确保找到问题2。 通过这种方式,您可以解决一系列问题,直到代码实际上达到最佳状态。