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

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

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); 

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

我发现这非常有用于识别80%的时间运行的代码的20% ,因此我应该担心优化。

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

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

这是一个例子: 例子

请参阅我们的SD C#Profiler 。 它可以通过自身和/或其所有被调用者提供function的function定时。