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

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

这是一个开源.Net 剖析器列表。

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

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

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

查看EQATEC分析器 ,免费并且运行良好。 也适用于ASP.NET和.NET CF.

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

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

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

如前所述, ANTS也是一个不错的选择。

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

在这个stackoverflow线程中有一些关于.NET的分析器的讨论。 我曾经使用过一些CLR Profiler ,它帮助我解决了软件中的一些性能问题。 值得一试。 Microsoft已发布了有关如何使用CLR Profiler的指南 。

对于性能调优,与内存诊断相反,有一种简单的方法 。

这是违反直觉的,但你所要做的就是在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.通过这种方式,您可以解决一系列问题,直到代码实际上达到最佳状态。