LARGE_INTEGER类型和LONGLONG类型以及QueryPerformanceFrequency函数

LARGE_INTEGER类型和LONGLONG类型以及QueryPerformanceFrequency函数LARGE_INTEGERLARGE_INTEGER是union,表示64位有符号整数值。其定义如下:    typedefunion_LARGE_INTEGER{     struct{                 DWORDLowPart;                 LONGHighPart;               };

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

LARGE_INTEGER

LARGE_INTEGER是union,表示64位有符号整数值。

其定义如下:    
typedef union _LARGE_INTEGER {
      struct {
                  DWORD LowPart;
                  LONG HighPart;
                }; 
          LONGLONG QuadPart; 
} LARGE_INTEGER;

如果你有编译器直接支持64位整数,可以直接使用QuadPart(64位),否则分别对LowPart(32位)和HighPart(32位)存取,HighPart的最高位为符号位。 
表示数的范围:–3689348814741910324到+4611686018427387903

LARGE_INTEGER的值等4000000000

在内存中的布局: 00 28 6B EE    00 00 00 00
                           (低字节 )     (高字节 )  

LONGLONG

LONGLONG等同于 int64 ,表示64位的有符号整数。一般用于处理超大的数据。比如CPU里的“性能计数器”之频率,经常在3亿次以上!就是1秒钟能跑3亿个“滴答”,这种情况下,往往需要超大的整数用来存储数据,此时就要用到LONGLONG。

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/160433.html原文链接:https://javaforall.net

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


相关推荐

  • 怎么关闭135 445端口_高危端口关闭方法

    怎么关闭135 445端口_高危端口关闭方法关闭135,139,445高危端口方法方法一:防火墙关闭高危端口其一:拒绝所有IP访问135、139、445端口1、打开“控制面板”→打开“系统和安全”→打开“系统和安全”→打开“windows防火墙”2、点击“高级设置”3、选中“入站规则”→鼠标右点击“新建规则”4、选择“端口”–>下一步5、在红色框中特定本地端口输入“135,139,445” –下一步…

    2022年10月17日
    0
  • mysql左连接多个表_mysql可以创建多少张表

    mysql左连接多个表_mysql可以创建多少张表A表:姓名,学号,班级编号B表:学号,成绩C表:班级编号,班级名称最后想显示为姓名,学号,成绩,班级名称A、B表用wherea.学号=b.学号查出之后再和C表左连接sql语句如下:selecta.姓名,a.学号,b.成绩,c.班级名称fromA表aleftjoinB表bona.学号=b.学号leftjoinC表cona.班级编号=c.班级编号…

    2022年9月2日
    2
  • pyttsx3 快速上手之:语音合成播报

    pyttsx3 快速上手之:语音合成播报Pythonpyttsx3使用之:语音播报pyttsx3是python中最常用的文字转语音库,使用方便,功能较为完整首先安装pyttsx3lib:pipinstallpyttsx3然后封装下API,实现为speaker.py:importpyttsx3global__speak_engine__speak_engine=Nonedefsay(content): global__speak_engine ifnot__speak_engine:

    2022年6月26日
    57
  • TCP报文格式详解

    TCP报文是TCP层传输的数据单元,也叫报文段。端口号:用来标识同一台计算机的不同的应用进程。源端口:源端口和IP地址的作用是标识报文的返回地址。目的端口:端口指明接收方计算机上的应用程序接口。TCP报头中的源端口号和目的端口号同IP数据报中的源IP与目的IP唯一确定一条TCP连接。序号和确认号:是TCP可靠传输的关键部分。序号是本报文段发送的数据组的第一个字节的序号。

    2022年4月7日
    46
  • Lena图像分解成小块与从小块合成

    Lena图像分解成小块与从小块合成 ➤01背景在2020年人工神经网络课程第一次作业第八题中需要对Lena图像使用AutoEncode网络进行压缩。将Lena(灰度图像)拆解成不同尺寸的大小形成训练压缩样本过程;或者从训练结果重新组合成Lena灰度图像是实验的基础。▲Lena灰度图像下面给出相关操作的Python程序和相关的结果。主要操作包括:将512×512的Lena灰度图片(0~255)分割成边长8~16的图像块,并通过行扫描形行向量;对图像进行归一化,形成数据在-0.5~0.5之

    2022年6月19日
    19
  • java 转为Calendar_java Calendar和Date()的转化

    java 转为Calendar_java Calendar和Date()的转化在使用过程中发现,publicstaticvoidmain(Stringargs[]){Datedate=newDate();System.out.println(date.getYear();}输出结果为:114而且getYear()方法已经不再建议使用。于是想到Calendar。正确方式为:publicstaticvoidmain(Stringargs[]){Da…

    2022年6月7日
    51

发表回复

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

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