我的代码需要多长时间才能运行?
答
退房的Stopwatch
类:
Stopwatch sw = new Stopwatch();
sw.Start();
// your code here
sw.Stop();
TimeSpan elapsedTime = sw.Elapsed;
答
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中更多地讨论了我想要达到的目标。
答
如果你想要简单,只需在它周围放置一个N迭代循环并使用StopWatch(或者只是一个手表)并除以N.例如,如果你想要微秒,让N = 1000000。如果你担心关于循环的开销,只需将其展开10倍即可。
个人感谢MiniBench,Jon - 它已经成为我的宝贵工具。 – 2009-08-16 22:39:00
@C罗杰斯:你可能比我用过的还多!我真的会回头一段时间......写作已经相当接管了现在,虽然:( – 2009-08-17 08:14:37