测量函数执行时间的最佳方法是什么?

86

很明显我可以做DateTime.Now.After - DateTime.Now.Before,但一定有更复杂的方法。

欢迎提供任何技巧。

4个回答


45

我强烈建议您查看System.Diagnostics.Stopwatch

当我寻找更多关于Stopwatch的信息时,我发现了这个网站;

小心使用stopwatch

还提到了另一种可能性

Process.TotalProcessorTime


1
文章已更新 - 秒表已经得到改进。 - kwesolowski
你能告诉我TotalProcessorTimeStopwatch的区别吗?我还没有搜索到任何信息。 - yode

10

使用性能分析器

尽管你的方法仍然可以工作,但如果你正在寻找更为复杂的方法,我建议使用C#性能分析器

它们的优点是:

  • 甚至可以获得语句级别的细节
  • 无需更改你的代码库
  • 插装通常具有非常少的开销,因此可以获得非常准确的结果。

也有许多开源的工具可供选择。


使用分析器也有缺点:信息是事后的,仍需要仪器,不适合保留在生产代码中(我们可能希望测量工作应用程序,而不仅仅是在开发期间)。最后:分析有时可能过度。 - Tomasz Gandor

4

Tickcount 是一个很好的工具,但我建议运行100或1000次,并计算平均值。这不仅使其更加可测量——对于非常快速/短暂的函数,而且有助于处理由开销引起的一些一次性效应。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接