我的代码运行多长时间?

时间:2009-08-16 18:54:44

标签: c# benchmarking performance

如何判断我的C#代码需要多长时间才能运行?

6 个答案:

答案 0 :(得分:14)

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

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

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

答案 1 :(得分:14)

查看Stopwatch课程:

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

// your code here

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

答案 2 :(得分:8)

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

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

如果你对基准测试感兴趣,我有MiniBench项目,我必须在某个时候重新开始工作 - 这不是我希望它最终结束的地方,但它是一个开始。我在this blog post中更多地讨论了我想要实现的目标。

答案 3 :(得分:1)

查看Stopwatch课程。

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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