任何说明每种方法运行多长时间的工具?

时间:2010-09-22 20:45:11

标签: c# optimization profiling

我程序的某些部分很慢。而且我想知道是否有可以使用的工具,例如它可以告诉我运行方法A()花了100毫秒等等......或类似的有用信息。

4 个答案:

答案 0 :(得分:12)

如果您使用的是Visual Studio Team System,则“性能工具”中有一个内置的分析器。在this blog上有很多有用的背景知识。

我发现这对于识别20% of my code that runs 80% of the time非常有用,因此我应该担心优化。

另一个可以令人惊讶地有效的简单技术是在调试器中运行您的发布代码,并在它处于您正在尝试诊断的“忙碌”状态时中断它几次(10个左右就足够了)。您可能会发现反复出现的callstack信息,可以引导您到达一般关注区域。再次,80/20规则生效。

答案 1 :(得分:8)

System.Diagnostics命名空间提供了一个名为Stopwatch的有用类,可用于对代码的某些部分进行计时(将其视为“穷人的探查器”)。

这就是你如何使用它:

Stopwatch stopwatch = new Stopwatch();
stopwatch.Start(); // Start timing

// This is what we want to time
DoSomethingWeSuspectIsSlow();

stopwatch.Stop();
Console.WriteLine("It took {0} ms.", stopwatch.ElapsedMilliseconds);

答案 2 :(得分:3)

这类应用程序被称为“分析器”

以下是一个例子:example

答案 3 :(得分:2)

请参阅我们的SD C# Profiler。它可以自己和/或所有被调用者提供函数的函数计时。