本文介绍C#三种性能分析计时器:Stopwatch、Environment.TickCount、Win32 API函数QueryPerformanceCounter() 和 QueryPerformanceFrequency()的性能与精度对比:
说明:
private void Test1()
{
int a = 1 + 2;
}
计算代表执行上面的Test1方法,主要是为了排除其他方面的影响,
不计算代表真实时间。
差距为计算和不计算的差值。
精度
//延时1S精度测试5次平均值(去掉异常值):
//Stopwatch:11ms
//Environment.TickCount:15ms
//QueryPerformanceCounter:12ms
性能
//运行10000测试5次平均值(去掉异常值):
//Stopwatch:1.1ms
//Environment.TickCount:0.08ms
//QueryPerformanceCounter:2.1ms
结论
//Stopwatch:精度高、性能适中,推荐使用。
//Environment.TickCount:性能最好,但精度低,误差15ms,适合超时判断等对精度要求不高的场合。
//QueryPerformanceCounter:性能比Stopwatch差2倍多,精度和Stopwatch一致,不推荐。
另外。从精度测试可以看出Thread.Sleep(1000)有10-15ms的误差。