关于QueryPerformanceCounter与时间片
看到一些帖子,介绍QueryPerformanceCounter可以精确计时到1微秒。
而操作系统给一个线程分配的时间片是20-50毫秒。
设线程a在先获得时间T1 ,执行某任务时,被系统切换了,
再次获得时间片,完成任务,取得时间T2,
用时t=T2-T1,其中实际上还有被系统切换流失的时间。
是否可以说,用时t并不能反映执行任务真正需要的时间?
LARGE_INTEGER litmp;
LONGLONG QPart1,QPart2;
double dfMinus, dfFreq, dfTim;
QueryPerformanceFrequency(&litmp);
dfFreq = (double)litmp.QuadPart;// 获得计数器的时钟频率
QueryPerformanceCounter(&litmp);
QPart1 = litmp.QuadPart;// 获得初始值
//这里执行某任务.....
QueryPerformanceCounter(&litmp);
QPart2 = litmp.QuadPart;//获得中止值
dfMinus = (double)(QPart2-QPart1);
dfTim = dfMinus / dfFreq;// 获得对应的时间值,单位为秒