当前位置 : 主页 > 网络安全 > 测试自动化 >

winapi – 什么是高分辨率性能计数器?

来源:互联网 收集:自由互联 发布时间:2021-06-22
在Win32 API中,有一个函数Query PerformanceCounter,用于查询非常高分辨率的性能计时器的值. 什么是“高分辨率性能计时器”?它是否受硬件支持?什么系统不支持它? 在目前这一代处理器的
在Win32 API中,有一个函数Query PerformanceCounter,用于查询非常高分辨率的性能计时器的值.

什么是“高分辨率性能计时器”?它是否受硬件支持?什么系统不支持它?

在目前这一代处理器的Windows 7下,这是CPU(HPET)内部可靠的高精度(纳秒)计时器.

在以前的版本和前几代处理器中,它是“某种东西”,几乎可以说是任何东西.最常见的是,它是RDTSC指令返回的值(或非x86上的等效值),它可能是也可能不是可靠的,与时钟无关.请注意,RDTSC(最初,根据定义,但现在不再是)不测量时间,它测量周期.

在当前和上一代CPU上,RDTSC通常是可靠的,并且与时钟无关(即,它现在真正在测量时间),在前一代,特别是在移动或某些多CPU设备上,它不是. “定时器”可以加速和减速,甚至在不同的CPU上不同,导致“时间旅行”.

编辑:cpuid(0x80000007)中的常量tsc标志可用于判断RDTSC是否可靠(虽然这并不能解决问题,因为如果没有,如果没有其他选择该怎么办… ).

在较旧的系统(如8-10岁)上,其他一些计时器可用于QueryPerformanceCounter.那些可能既没有高分辨率,也没有非常准确.

网友评论