QueryPerformanceFrequency 获取 cpu频率 的问题

来源:百度知道 编辑:UC知道 时间:2024/06/17 18:11:04
我用C++ 的 QueryPerformanceFrequency() 函数获得的值是 3579545
而CPU频率是: 2.01GHz 请问换算关系是什么?

::QueryPerformanceFrequency(&lpFrequency);
lpFrequency.QuadPart;

我的主频是2.43G,QueryPerformanceFrequency() 得到的结果就是2430040000,没什么换算关系吧。

在多核心或多处理器的计算机上,特别是在支持CPU频率动态调整的计算机上,windows系统下的QueryPerformanceFrequency()获取HPET(如果存在)的频率,而QueryPerformanceCounter()获取HPET(如果存在)自上电以来时钟周期数,与CPU频率无关。前一个函数不会因为线程运行所在的CPU不同或CPU的频率在不同时刻的差异而反馈不同的值,系统上电初始化以后便不会改变,后一个函数的源也是统一的。这样便可以精确计算目标程序,特别是多线程程序的性能。
如果想获得CPU的默认信息,包括制造商,版本号,默认频率等等,请使用:__cpuid()。如果想获得当前CPU的实际频率,请获取系统当前基频和倍频然后计算得到。

对于酷睿系列cpu由于内核时钟是变化的,使用的别的值。intel文档说可能是外部时钟,FSB,或其它。