博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
精确时间计算方法
阅读量:5252 次
发布时间:2019-06-14

本文共 1280 字,大约阅读时间需要 4 分钟。

在很多应用场合需要能够知道时间间隔,比如在计算程序中想知道运行算法的时间,还有就是定时器的应用。

这两个函数是VC提供的仅供Windows 95及其后续版本使用的精确时间函数,并要求计算机从硬件上支持精确定时器。

QueryPerformanceFrequency()函数和QueryPerformanceCounter()函数的原型如下:

BOOL  QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency);BOOL  QueryPerformanceCounter(LARGE_INTEGER *lpCount);double time=(nStopCounter.QuadPart-nStartCounter.QuadPart)/frequency.QuadPart;

数据类型ARGE_INTEGER既可以是一个8字节长的整型数,也可以是两个4字节长的整型数的联合结构, 其具体用法根据编译器是否支持64位而定。该类型的定义如下:

typedef union _LARGE_INTEGER       {           struct           {              DWORD LowPart ;// 4字节整型数              LONG  HighPart;// 4字节整型数           };           LONGLONG QuadPart ;// 8字节整型数                   }LARGE_INTEGER ;

在进行定时之前,先调用QueryPerformanceFrequency()函数获得机器内部定时器的时钟频率, 然后在需要严格定时的事件发生之前和发生之后分别调用QueryPerformanceCounter()函数,利用两次获得的计数之差及时钟频率,计算出事件经 历的精确时间。下列代码实现1ms的精确定时:

LARGE_INTEGER  cpu_frequency;LARGE_INTEGER  begin_count;LARGE_INTEGER  end_count;double time_diff;QueryPerformanceFrequency(&cpu_frequency); //get cpu frequencyQueryPerformanceCounter(&begin_count);do{    QueryPerformanceCounter(&end_count);    time_diff =(double) (end_count.QuadPart - begin_count)/cpu_frequency.QuadPart;//get time interval        }while(time_diff < 0.001)

转载于:https://www.cnblogs.com/cheng07045406/archive/2013/06/06/3122792.html

你可能感兴趣的文章
C#压缩或解压(rar和zip文件)
查看>>
让IE浏览器支持CSS3圆角属性的方法
查看>>
巡风源码阅读与分析---nascan.py
查看>>
LiveBinding应用 dataBind 数据绑定
查看>>
Linux重定向: > 和 &> 区别
查看>>
nginx修改内核参数
查看>>
【欧拉函数模板题】最大公约数
查看>>
C 筛选法找素数
查看>>
TCP为什么需要3次握手与4次挥手(转载)
查看>>
IOC容器
查看>>
织梦仿站第三课:网站的文件分割
查看>>
Windows 2003全面优化
查看>>
URAL 1002 Phone Numbers(KMP+最短路orDP)
查看>>
web_day4_css_宽度
查看>>
用sql删除数据库重复的数据的方法
查看>>
学习笔记21—PS换图片背景
查看>>
electron入门心得
查看>>
格而知之2:UIView的autoresizingMask属性探究
查看>>
Spring3.0 AOP 具体解释
查看>>
我的Hook学习笔记
查看>>