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

Boh*_*ohn 6 c# optimization profiling

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

Ste*_*end 12

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

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

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


Mar*_*all 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);
Run Code Online (Sandbox Code Playgroud)

  • 或者,创建一个实现idisposable的类,它在构造时启动计时器,在dispose上停止和写入.然后,您可以使用using语句包装任何代码块! (3认同)
  • 还要确保在计时之前至少调用过一次该方法,这样就不会测量JIT编译的时间. (2认同)