关于QueryPerformanceCounter与时间片
时间:2011-10-14
来源:互联网
看到一些帖子,介绍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;// 获得对应的时间值,单位为秒
而操作系统给一个线程分配的时间片是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;// 获得对应的时间值,单位为秒
作者: hztj2005 发布时间: 2011-10-14
我觉得这要看你如何理解 反映执行任务真正需要的时间了?
我个人觉得包括切换的时间比较合理吧。
好像做公交,从A到C,时间不单单包括公交跑动的时间,还包括堵车的时间。
我个人觉得包括切换的时间比较合理吧。
好像做公交,从A到C,时间不单单包括公交跑动的时间,还包括堵车的时间。
作者: hongkun18 发布时间: 2011-10-17
顶起来,看看大家的意见。
作者: hztj2005 发布时间: 2011-12-13
对的,Windows不是实时系统,不能那样计算较长的时间,不精确
作者: yayafu 发布时间: 2011-12-13
只不过是一种衡量,当所有都用这个来统计就可以得到一个相对的分配以及他们的长短
作者: oyljerry 发布时间: 2011-12-13
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28