有些时候,我们需要测试程序所用的时间,比如说测试快速排序的时间,我以前的做法是这样的:
DateTime begin = DateTime.Now;
快速排序
DateTime end = DateTime.Now;
TimeSpan s = end - begin;
Console.WriteLine(s);我以为这样就可以了,没想到这样的做法是错落百出的,看了《data structures and algorithms using C#》(美 michael mcmillan 著) 才知道上面的做法没有考虑垃圾回收和线程调换
正确做法如下:
public class Timing
{
TimeSpan duration;
public Timing()
{
duration = new TimeSpan(0);
}
public void StopTime()
{
duration = Process.GetCurrentProcess().TotalProcessorTime;
}
public void StartTime()
{
GC.Collect();
GC.WaitForPendingFinalizers();
}
public TimeSpan Result()
{
return duration;
}
}开始时使用 start 和 stop 最后用result即可
446

被折叠的 条评论
为什么被折叠?



