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计算的结果单位是秒。

Fr: http://www.cnblogs.com/lidabo/p/3728509.html

QueryPerformanceFrequency 和 QueryPerformanceCounter用法相关推荐

  1. QueryPerformanceFrequency用法--Windows高精度定时计数

    在多核心或多处理器的计算机上,特别是在支持CPU频率动态调整的计算机上,windows系统下的QueryPerformanceFrequency()获取HPET(如果存在)的频率,而QueryPerf ...

  2. LARGE_INTEGER类型和QueryPerformanceFrequency()

    LARGE_INTEGER类型和QueryPerformanceFrequency() LARGE_INTEGER LARGE_INTEGER是union,用于表示一个64位有符号整数值,其他定义如下 ...

  3. QueryPerformanceFrequency使用方法--Windows高精度定时计数

    在多核心或多处理器的计算机上.特别是在支持CPU频率动态调整的计算机上,windows系统下的QueryPerformanceFrequency()获取HPET(假设存在)的频率,而QueryPerf ...

  4. 时间的函数Sleep,clock,GetTickCount,QueryPerformanceCounter

    介绍 我 们在衡量一个函数运行时间,或者判断一个算法的时间效率,或者在程序中我们需要一个定时器,定时执行一个特定的操作,比如在多媒体中,比如在游戏中等,都 会用到时间函数.还比如我们通过记录函数或者算 ...

  5. VC中基于 Windows 的精确定时

    方式一:VC中的WM_TIMER消息映射能进行简单的时间控制.首先调用函数SetTimer()设置定时 间隔,如SetTimer(0,200,NULL)即为设置200ms的时间间隔.然后在应用程序中增 ...

  6. MFC90条技巧-带目录

    1."属性页的添加: 2."List Control中标题栏(Column)的添加: 3."ToolBar和StatusBar中控件的添加: 4."通过Cont ...

  7. linux 改成utc时间_C++下四种常用的程序运行时间的计时方法总结

    记录下当前时间start,调用程序fun(),再记录一下时间end. 前后时间一减(start-end)就得到程序的运行时间了. 首先介绍最常用的,但两种精度不是很高(>=10ms)的方法:cl ...

  8. 关于VC中的时间函数讨论

    关于在VC中时间函数的事业问题在论坛有不少的帖子讨论,下面结合讨论结果和相关的知识做个总结. 先从一个如何在程序中延时的问题谈起,延时的方法有 方法一: 使用sleep函数,它的最小单位是1ms,如延 ...

  9. C语言获取SYSTEMTIME

    2019独角兽企业重金招聘Python工程师标准>>> C语言中如何获取时间?精度如何? 1 使用time_t time( time_t * timer ) 精确到秒 2 使用clo ...

最新文章

  1. 程序员生存定律--编程的起点与可能的失足
  2. Android 6.0 运行时权限处理
  3. Python-OpenCV 杂项(一):图像绘制
  4. LwIP 之六 详解动态内存管理 内存池(memp.c/h)
  5. python学习-syspath、系统内置模块
  6. TCP/IP ---封装与分用
  7. android 下拉刷新实现方式,Android RecyclerView设置下拉刷新的实现方法
  8. cmd echo写入shell_渗透技巧——通过cmd上传文件的N种方法
  9. (5)Oracle基础--约束
  10. EasyDarwin EasyCamera支持海康摄像机接入了
  11. swift 的水波动画或雷达动画效果
  12. 什么是Harmony操作系统?华为新操作系统介绍
  13. java utc时间_Java获得UTC时间
  14. mysql多数据源配置
  15. 如何用潜类别混合效应模型(Latent Class Mixed Model ,LCMM)分析老年痴呆年龄数据
  16. 针对宝宝肠胃保护,五大国际医生组织推荐使用爱乐乐益生菌
  17. 平分秋色? 鹿死谁手?
  18. HTML学习笔记(五)
  19. 如何用 Visual Studio上传图片至网页
  20. 华为OD机试 - 获取最大软件版本号(Java JS Python)

热门文章

  1. 微信小程序服务器支付sdk,微信小程序之支付后如何调用SDK的异步通知
  2. java判断是否换行_如何检测java中的换行符
  3. $.grep()函数
  4. python-re模块
  5. 用masterpage后页面定位
  6. 在android中如何使用UDP和TCP传输
  7. Mr.J-- HTTP学习笔记(三)-- HTTP报文
  8. Mr.J--jQuery效果总结
  9. Mr.J--Java之static关键字
  10. 07 ansible 角色roles 整合多个剧本