QueryPerformanceFrequency 和 QueryPerformanceCounter用法
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用法相关推荐
- QueryPerformanceFrequency用法--Windows高精度定时计数
在多核心或多处理器的计算机上,特别是在支持CPU频率动态调整的计算机上,windows系统下的QueryPerformanceFrequency()获取HPET(如果存在)的频率,而QueryPerf ...
- LARGE_INTEGER类型和QueryPerformanceFrequency()
LARGE_INTEGER类型和QueryPerformanceFrequency() LARGE_INTEGER LARGE_INTEGER是union,用于表示一个64位有符号整数值,其他定义如下 ...
- QueryPerformanceFrequency使用方法--Windows高精度定时计数
在多核心或多处理器的计算机上.特别是在支持CPU频率动态调整的计算机上,windows系统下的QueryPerformanceFrequency()获取HPET(假设存在)的频率,而QueryPerf ...
- 时间的函数Sleep,clock,GetTickCount,QueryPerformanceCounter
介绍 我 们在衡量一个函数运行时间,或者判断一个算法的时间效率,或者在程序中我们需要一个定时器,定时执行一个特定的操作,比如在多媒体中,比如在游戏中等,都 会用到时间函数.还比如我们通过记录函数或者算 ...
- VC中基于 Windows 的精确定时
方式一:VC中的WM_TIMER消息映射能进行简单的时间控制.首先调用函数SetTimer()设置定时 间隔,如SetTimer(0,200,NULL)即为设置200ms的时间间隔.然后在应用程序中增 ...
- MFC90条技巧-带目录
1."属性页的添加: 2."List Control中标题栏(Column)的添加: 3."ToolBar和StatusBar中控件的添加: 4."通过Cont ...
- linux 改成utc时间_C++下四种常用的程序运行时间的计时方法总结
记录下当前时间start,调用程序fun(),再记录一下时间end. 前后时间一减(start-end)就得到程序的运行时间了. 首先介绍最常用的,但两种精度不是很高(>=10ms)的方法:cl ...
- 关于VC中的时间函数讨论
关于在VC中时间函数的事业问题在论坛有不少的帖子讨论,下面结合讨论结果和相关的知识做个总结. 先从一个如何在程序中延时的问题谈起,延时的方法有 方法一: 使用sleep函数,它的最小单位是1ms,如延 ...
- C语言获取SYSTEMTIME
2019独角兽企业重金招聘Python工程师标准>>> C语言中如何获取时间?精度如何? 1 使用time_t time( time_t * timer ) 精确到秒 2 使用clo ...
最新文章
- 程序员生存定律--编程的起点与可能的失足
- Android 6.0 运行时权限处理
- Python-OpenCV 杂项(一):图像绘制
- LwIP 之六 详解动态内存管理 内存池(memp.c/h)
- python学习-syspath、系统内置模块
- TCP/IP ---封装与分用
- android 下拉刷新实现方式,Android RecyclerView设置下拉刷新的实现方法
- cmd echo写入shell_渗透技巧——通过cmd上传文件的N种方法
- (5)Oracle基础--约束
- EasyDarwin EasyCamera支持海康摄像机接入了
- swift 的水波动画或雷达动画效果
- 什么是Harmony操作系统?华为新操作系统介绍
- java utc时间_Java获得UTC时间
- mysql多数据源配置
- 如何用潜类别混合效应模型(Latent Class Mixed Model ,LCMM)分析老年痴呆年龄数据
- 针对宝宝肠胃保护,五大国际医生组织推荐使用爱乐乐益生菌
- 平分秋色? 鹿死谁手?
- HTML学习笔记(五)
- 如何用 Visual Studio上传图片至网页
- 华为OD机试 - 获取最大软件版本号(Java JS Python)