我正在为在Visual Studio 2008中开发的C#应用程序寻找一个分析器。我正在寻找价格低廉(开源是首选)的东西,它可以集成到VS2008中。我找到了Visual Studio Profiler,但我不知道如何使用它。我安装了Stand Alone版本,它取决于Visual Studio(我猜不是单独使用?)但是在工具菜单中没有任何内容显示出来,就像它们的说法一样。
答案 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欧元。
答案 4 :(得分:3)
答案 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。 通过这种方式,您可以解决一系列问题,直到代码实际上达到最佳状态。