猿问

精确的时间测量以进行性能测试

查看代码(例如方法调用)花费了多长时间的最准确方法是什么?


我猜最简单,最快的方法是:


DateTime start = DateTime.Now;

{

    // Do some work

}

TimeSpan timeItTook = DateTime.Now - start;

但是,这有多精确?有更好的方法吗?


FFIVE
浏览 833回答 3
3回答

守着一只汪

更好的方法是使用Stopwatch类:using System.Diagnostics;// ...Stopwatch sw = new Stopwatch();sw.Start();// ...sw.Stop();Console.WriteLine("Elapsed={0}",sw.Elapsed);

jeck猫

正如其他人所说,Stopwatch在这里使用是一个很好的类。您可以将其包装为有用的方法:public static TimeSpan Time(Action action){    Stopwatch stopwatch = Stopwatch.StartNew();    action();    stopwatch.Stop();    return stopwatch.Elapsed;}(请注意使用Stopwatch.StartNew()。我宁愿先创建秒表,再Start()进行简单调用。)显然,这会招致调用委托的麻烦,但是在大多数情况下,这是无关紧要的。然后,您将编写:TimeSpan time = StopwatchUtil.Time(() =>{    // Do some work});您甚至可以ITimer为此建立一个接口,并StopwatchTimer, CpuTimer在可用时使用etc的实现。
随时随地看视频慕课网APP
我要回答