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

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

问题描述:

我如何知道我的C#代码需要多少时间才能运行?我的代码需要多长时间才能运行?

退房的Stopwatch类:

Stopwatch sw = new Stopwatch(); 
sw.Start(); 

// your code here 

sw.Stop(); 
TimeSpan elapsedTime = sw.Elapsed; 

查看Stopwatch班。

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

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

另外,一定要运行代码多次(多次是可行的),以获得更好的平均时间,以及降低CPU负载波动的影响。

正如其他人所说,Stopwatch类是很好的事情简单的正时侧。其他位要记住,虽然:

  • 您的代码可能产生,这将需要被垃圾收集你已经停止秒表
  • 后,相反你的时间可以包括其他对象被垃圾收集,即使对象他们与您的代码无关
  • 如果您在第一次运行您的方法之前开始计时,它将包括JIT时间
  • 如果您花费很短的时间就会导致非常不可预测的结果 - 我倾向于运行代码很多秒,以说明问题对于应用程序被其他进程等被打断

如果你感兴趣的标杆,我有MiniBench项目,我必须避开在某个时候再努力 - 这不是很,我希望它最终,但这是一个开始。我在this blog post中更多地讨论了我想要达到的目标。

+0

个人感谢MiniBench,Jon - 它已经成为我的宝贵工具。 – 2009-08-16 22:39:00

+0

@C罗杰斯:你可能比我用过的还多!我真的会回头一段时间......写作已经相当接管了现在,虽然:( – 2009-08-17 08:14:37

我推荐使用诸如ANTS这样的分析工具来测试应用程序的速度并发现代码很慢。这将允许您执行执行时间的逐行测试。

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