LARGE_INTEGER类型和QueryPerformanceFrequency()「建议收藏」

LARGE_INTEGER类型和QueryPerformanceFrequency()「建议收藏」LARGE_INTEGER类型和QueryPerformanceFrequency()LARGE_INTEGERLARGE_INTEGER是union,用于表示一个64位有符号整数值,其他定义如下:Typedefunion_LARGE_INTEGER{Struct{ DWORD  LowPart;    LONG    HighPart;    };LO…

大家好,又见面了,我是你们的朋友全栈君。

LARGE_INTEGER类型和QueryPerformanceFrequency()

LARGE_INTEGER

LARGE_INTEGERunion,用于表示一个64位有符号整数值,其他定义如下:

Typedef union _LARGE_INTEGER {

Struct { 

DWORD   LowPart;    

LONG     HighPart;    

};

LONGLONG   QuadPart; 

}LARGE_INTEGER; 

如果你有编译器直接支持64位整数可以直接使用QuadPart64位),否则分别对LowPart(32)HighPart32位)存取,HighPart的最高位为符号位。

表示数的范围:–3689348814741910324+4611686018427387903 

LARGE_INTEGER的值等4000000000,在内存中的布局:

00   28   6B   EE       00   00   00   00

(低字节           (高字节  

QueryPerformanceFrequency()

类型:Win32API

原型:BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency);

作用:返回硬件支持的高精度计数器的频率。

返回值:非零,硬件支持高精度计数器;零,硬件不支持,读取失败。

QueryPerformanceFrequency()技术特点供WIN9X使用的高精度定时器:

QueryPerformanceFrequency()QueryPerformanceCounter(),要求计算机从硬件上支持高精度定时器。

函数的原形是:

BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency);

BOOL QueryPerformanceCounter (LARGE_INTEGER *lpCount);

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

typeef union _ LARGE_INTEGER

{

 struct

 {

 DWORD LowPart;

 LONG HighPart;

 };

 LONGLONG QuadPart;

} LARGE_INTEGER;

在定时前应该先调用QueryPerformanceFrequency()函数获得机器内部计时器的时钟频率。接着在需要严格计时的事件发生前和发生之后分别调用QueryPerformanceCounter(),利用两次获得的计数之差和时钟频率,就可以计算出事件经历的精确时间。测试函数SLEEP(100)的精确持续时间方法:

LARGE_INTEGER litmp;

LONGLONG qt1,qt2;

double dft,dff,dfm;

QueryPerformanceFrequency(&litmp);//获得时钟频率

dff=(double)litmp.QuadPart;

QueryPerformanceCounter(&litmp);//获得初始值

qt1=litmp.QuadPart;Sleep(100);

QueryPerformanceCounter(&litmp);//获得终止值

qt2=litmp.QuadPart;

dfm=(double)(qt2-qt1);

dft=dfm/dff;//获得对应的时间值

需要注意的是DFT计算的结果单位是秒。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/160350.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • qstring如何初始化_qstringlist 初始化

    qstring如何初始化_qstringlist 初始化();//将路径赋值给strFilePath}ui->label->setText(strFilePath);QStringListfileList;dir.cd(strFilePath);//打开路径,调用dir对象的成员……(intindex,QStringkeyorvalue);//读取键名private:voidinit_com();…

    2022年6月9日
    168
  • FPGA实现CAN接口(SJA1000)

    FPGA实现CAN接口(SJA1000)学无止境,善于积累,每天积累一点点,成功就在眼前,加油!1CAN总线简介CAN(ControllerAreaNetwork,控制器局域网)总线是一个多主机异步串行总线,也是国际上应用最广泛的现场总线之一。在现场总线中,它是惟一被ISO国际标准化组织批准的现场总线。由于其成本低、容错能力强、支持分布式控制、通信速率高等优点在汽车、工业控制、航天等领域得到广泛应用。特别是由于CAN总线具有…

    2022年6月29日
    37
  • 推荐 33 个 IDEA 最牛配置,写代码太爽了

    来自:琦彦  blog.csdn.net/fly910905/article/details/77868300 1.设置maven 1.在File->setting…

    2021年6月22日
    130
  • 新版白话空间统计(8):莫兰指数小结

    新版白话空间统计(8):莫兰指数小结本节对前面写的莫兰指数部分留下的一下小问题进行解答,里面包括一些读者朋友们通过邮件提出的一些问题。Q1:ArcGIS中,计算莫兰指数的工具里面的那个Row(行标准化)是拿来干嘛的?A:…

    2022年6月25日
    63
  • 小米手机解锁BL以及获取Root权限(开发版)

    小米手机解锁BL以及获取Root权限(开发版)已经很久没有刷机了,现在有需要,就再刷一下。想起来自己以前刷机很流畅,现在还得查来查去的。所以就写了以下教程,主要是记录一下自己踩过的一些坑。我刷的手机是小米8,所以以下教程都是小米8为例,其他手机可能还有细微不同之处…….一、解锁BL:这是官方教程,很详细!我就是在教程中,把自己踩过的一些坑给罗列一下,增加一下自己的印象。解锁Bootloader的步骤:解锁前,请将版…

    2022年6月3日
    60
  • Tomcat的Manager显示403 Access Denied

    Tomcat的Manager显示403 Access Denied

    2022年3月3日
    49

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号