Windows API一日一练(68)QueryPerformanceCounter函数

来源:互联网 发布:直通车地域优化 编辑:程序博客网 时间:2024/05/21 09:54
精确的时间计时,有时候是非常必要的。比如播放多媒体时视频与音频的时间同步,还有在测试代码的性能时,也需要使用到非常精确的时间计时。还有测试硬件的性能时,也需要精确的时间计时。这时就需要使用QueryPerformanceCounter来查询定时器的计数值,如果硬件里有定时器,它就会启动这个定时器,并且不断获取定时器的值,这样的定时器精度,就跟硬件时钟的晶振一样精确的。
 
函数QueryPerformanceCounterQueryPerformanceFrequency声明如下:
 
WINBASEAPI
BOOL
WINAPI
QueryPerformanceCounter(
    __out LARGE_INTEGER *lpPerformanceCount
    );
 
WINBASEAPI
BOOL
WINAPI
QueryPerformanceFrequency(
    __out LARGE_INTEGER *lpFrequency
    );
lpPerformanceCount是返回定时器当前计数值。
QueryPerformanceFrequency是返回定时器的频率。
 
调用函数的例子如下:
 
#001 //精确时钟查询。
#002  //蔡军生 2007/11/08 QQ:9073204 深圳
#003  void TestHighTimer(void)
#004  {
#005         //
#006         LARGE_INTEGER nFreq;
#007         LARGE_INTEGER nLastTime1;
#008         LARGE_INTEGER nLastTime2;
#009 
#010         //获取是否支持精确定时器。
#011        if (QueryPerformanceFrequency(&nFreq))
#012         {
#013               //
#014               const int nBufSize = 256;
#015               TCHAR chBuf[nBufSize];
#016        
#017               //显示定时器的频率。
#018               wsprintf(chBuf,_T("LastTime=%I64d/r/n"),nFreq);
#019               OutputDebugString(chBuf);
#020 
#021               //获取定时器的值。
#022              QueryPerformanceCounter(&nLastTime1);
#023               wsprintf(chBuf,_T("LastTime=%I64d/r/n"),nLastTime1);
#024               OutputDebugString(chBuf);
#025              
#026               Sleep(0);
#027 
#028               //获取定时器的值。
#029              QueryPerformanceCounter(&nLastTime2);
#030               wsprintf(chBuf,_T("LastTime=%I64d/r/n"),nLastTime2);
#031               OutputDebugString(chBuf);
#032 
#033 
#034               //计算时间是花费多少秒。
#035               float fInterval = nLastTime2.QuadPart - nLastTime1.QuadPart;
#036               swprintf(chBuf,nBufSize,_T("花费:%f/r/n"),fInterval/(float)nFreq.QuadPart);
#037               OutputDebugString(chBuf);
#038         }
#039          
#040  }
 
 


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 我的信息被泄露怎么办 进入不良网站手机发信息怎么办 发不良信息被停机了怎么办 手机qq登录显示被冻结怎么办 qq账户被冻结了怎么办 qq钱包账户被永久冻结怎么办 怎么办转让费还没给我 收钱吗不能抵用红包怎么办 红包抵扣被关了怎么办 天猫客户给差评怎么办 淘宝闪电退款有纠纷怎么办呀 手机屏幕右下角出现彩色点怎么办 在超市买到假货怎么办 天猫超市多发货怎么办 天猫中不小心取消退款了怎么办 天猫超市写错了怎么办 二维码收付款不到红包怎么办 天猫优惠劵过期了怎么办 天猫购物津贴用不完怎么办 天猫上买的大件东西实物不符怎么办 天猫上面料成分与实物不符怎么办 闲鱼发货与实物不符怎么办 天猫超市买贵了怎么办 天猫超市里购买的东西退货怎么办 淘宝店上传的图片不清楚怎么办 微信图片打印出来不清楚怎么办 微信图片打印不清楚怎么办 淘宝上传商品视频不清楚怎么办 手机安装器没了怎么办 我不做直播换工作怎么办 天猫发票被投诉怎么办 天猫机顶盒闪退怎么办 苹果8红色掉漆怎么办 毛坯房验房房及厅试水时漏水怎么办 淘宝退货赠品被拆了怎么办 如果淘宝买家说赠品不好怎么办 淘宝顾客反应没赠品怎么办 淘宝上买东西赠品不给怎么办 天猫店关了质量有问题怎么办 蘑菇街开店被骗了怎么办 百视通网络机顶盒恢复出厂后怎么办