为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

准确的时间计时[新版]

2017-11-12 4页 doc 16KB 6阅读

用户头像

is_574951

暂无简介

举报
准确的时间计时[新版]准确的时间计时[新版] 精确的时间计时,有时候是非常必要的。比如播放多媒体时视频与音频的时间同步,还有在 测试代码的性能时,也需要使用到非常精确的时间计时。还有测试硬件的性能时,也需要精 确的时间计时。这时就需要使用QueryPerformanceCounter来查询定时器的计数值,如 果硬件里有定时器,它就会启动这个定时器,并且不断获取定时器的值,这样的定时器精度, 就跟硬件时钟的晶振一样精确的。 QueryPerformanceCounter 查询性能计数器 The QueryPerformanceCounter fu...
准确的时间计时[新版]
准确的时间计时[新版] 精确的时间计时,有时候是非常必要的。比如播放多媒体时视频与音频的时间同步,还有在 测试代码的性能时,也需要使用到非常精确的时间计时。还有测试硬件的性能时,也需要精 确的时间计时。这时就需要使用QueryPerformanceCounter来查询定时器的计数值,如 果硬件里有定时器,它就会启动这个定时器,并且不断获取定时器的值,这样的定时器精度, 就跟硬件时钟的晶振一样精确的。 QueryPerformanceCounter 查询性能计数器 The QueryPerformanceCounter function retrieves the current value of the high-resolution performance counter, if one exists. 此函数用于获取精确的性能计数器数值,如果存在. BOOL QueryPerformanceCounter( LARGE_INTEGER *lpPerformanceCount // address of current counter value 当前计数器值的地址 ); Parameters lpPerformanceCount Points to a variable that the function sets, in counts, to the current performance-counter value. If the installed hardware does not support a high-resolution performance counter, this parameter can be to zero. 指针,指向函数设置的一个变量(一般是个引用,译者注), 用来返回性能计数器的值.如果已 安装的硬件不支持高精度性能计数器,此参数可以为0(那调用有什么意义,用来查询?). Return Values If the installed hardware supports a high-resolution performance counter, the return value is nonzero. 不支持,返回非0 If the installed hardware does not support a high-resolution performance counter, the return value is zero. 否则返回0 下面有个例子: WINBASEAPI BOOL WINAPI QueryPerformanceCounter( __out LARGE_INTEGER *lpPerformanceCount ); WINBASEAPI BOOL WINAPI QueryPerformanceFrequency( __out LARGE_INTEGER *lpFrequency ); lpPerformanceCount是返回定时器当前计数值。 QueryPerformanceFrequency是返回定时器的频率。 调用函数的例子如下: //精确时钟查询。 void TestHighTimer(void) { // LARGE_INTEGER nFreq; LARGE_INTEGER nLastTime1; LARGE_INTEGER nLastTime2; //获取是否支持精确定时器。 if (QueryPerformanceFrequency(&nFreq)) { // const int nBufSize = 256; TCHAR chBuf[nBufSize]; //显示定时器的频率。 wsprintf(chBuf,_T("LastTime=%I64d\r\n"),nFreq); OutputDebugString(chBuf); //获取定时器的值。 QueryPerformanceCounter(&nLastTime1); wsprintf(chBuf,_T("LastTime=%I64d\r\n"),nLastTime1); OutputDebugString(chBuf); Sleep(0); //获取定时器的值。 QueryPerformanceCounter(&nLastTime2); wsprintf(chBuf,_T("LastTime=%I64d\r\n"),nLastTime2); OutputDebugString(chBuf); //计算时间是花费多少秒。 float fInterval = nLastTime2.QuadPart - nLastTime1.QuadPart; swprintf(chBuf,nBufSize,_T("花 费:%f\r\n"),fInterval/(float)nFreq.QuadPart); OutputDebugString(chBuf); } }
/
本文档为【准确的时间计时[新版]】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索