我的代码需要运行多长时间?

我怎样才能知道我的C#代码运行了多长时间?

查看Stopwatch课程:

 Stopwatch sw = new Stopwatch(); sw.Start(); // your code here sw.Stop(); TimeSpan elapsedTime = sw.Elapsed; 

Stopwatch类在.NET中提供高精度计时。 它能够以大约100纳秒(几分之一毫秒)的灵敏度测量时间。 要获得精确的分辨率,请阅读Stopwatch.Frequency的值。

 var timer = System.Diagnostics.Stopwatch.StartNew(); // Run code here. var elapsed = timer.ElapsedMilliseconds. 

此外,请务必重复运行代码 (尽可能多次)以获得更好的平均时间,以及减少CPU负载波动的影响。

正如其他人所说, Stopwatch类对于简单的计时方面是有益的。 其他要记住的部分:

  • 您的代码可能会生成在您停止秒表后需要进行垃圾回收的对象
  • 相反,您的计时可能包括其他对象被垃圾收集,即使它们与您的代码无关
  • 如果您在第一次运行方法之前开始计时,它将包括JIT时间
  • 如果您花费很短的时间,这会导致非常不可预测的结果 – 对于基准测试,我倾向于优先运行代码几秒钟,以便考虑应用程序被其他进程等中断。

如果你对基准测试感兴趣,我有MiniBench项目,我必须在某个时候再次开始工作 – 它不是我希望它最终结束的地方,但它是一个开始。 我在这篇博客文章中更多地讨论了我想用它实现的目标。

看看秒表课程。

我建议使用ANTS等分析工具来测试应用程序的速度并找到慢速代码。 这将允许您对执行时间进行逐行测试。

如果你想要简单,只需在它周围放一个N迭代循环并使用StopWatch(或只是一个手表)并除以N.例如,如果你想要微秒,让N = 1000000.如果你担心开销循环,只需将其展开10倍。