winsend9

来源:互联网 发布:阿里云app 编辑:程序博客网 时间:2024/04/28 21:12

1.7.3.2    高分辨率计时器(High-Resolution Timer)

计数器是一个通用的术语,在编程用来指一个递增的变量。一些系统包含一个高分辨率的执行计数器,提供高分辨率的逝去时间。如果系统上存在一个高分辨率的执行计数器,就可以使用QueryPerformanceFrequency函数来表示频率,采用每秒多少个的形式表示。该计数器的值依赖于处理器。例如,在一些处理器上,计数可能就是处理器时钟的周期。
函数QueryPerformanceCounter获得高分辨率执行计数器的当前值。通过在代码的起始与结束处调用该函数,一个应用程序在本质上使用该计数器作为一个高分辨率的计时器。比如,假设QueryPerformanceFrequency函数指明高分辨率执行计数器的频率是50,000个每秒。如果在需计时的应用程序代码块之前与之后直接调用QueryPerformanceCounter函数,计数值可能分别为15003500。这些值说明这段代码逝去了0.04(2000个计数,2000除以50,000)
 
QueryPerformanceCounter函数
函数QueryPerformanceCounter获得高分辨率执行计数器的当前值,函数原型如下:
BOOL QueryPerformanceCounter(   
LARGE_INTEGER *lpPerformanceCount
);
参数lpPerformanceCount指向一个接受执行计数器当前值的变量,用个数表示。
如果函数成功返回非0值。如果函数失败,返回0值。
 
QueryPerformanceFrequency函数
如果存在一个高分辨率执行计数器,函数返回计数器的频率。当系统正在运行时该频率不会改变。函数原型如下:
BOOL QueryPerformanceFrequency(    
    LARGE_INTEGER *lpFrequency
);
参数lpFrequency 指向一个接受当前执行计数器频率的变量,用个数每秒的形式表示。如果安转的硬件不支持一个分辨率执行计数器,该参数可能为0
如果安转的硬件支持一个分辨率执行计数器,返回值为一个非0值。如果函数失败,返回0值。如果安转的硬件不支持一个分辨率执行计数器,该函数失败。