QueryPerformanceFrequency与CPU速度不匹配?

时间:2013-11-10 07:22:05

标签: c windows performance api kernel

从这些中,函数返回以Hz为单位的值

QueryPerformaceFrequency()
Units of QueryPerformanceFrequency

运行intel Core i5 - 以2.8 G Hz

运行

该功能似乎返回 M Hz?

调试器中的值为 1,328,261

  • 为什么值只有7位?
  • 为什么这个值不反映 2 Ghz? (即2,8 .....)

我在这里缺少什么?

错误地使用该功能(如下)?

LARGE_INTEGER li;
QueryPerformanceFrequency(&li);
printf("Ticks: %f\n", double(li.QuadPart) );

1 个答案:

答案 0 :(得分:2)

QueryPerformanceFrequency返回性能计数器的频率,而不是CPU的时钟频率。这些并不是一回事,尽管它们似乎是一种常见的误解。

我强调documentation说:

  

指向接收当前变量的变量的指针   性能计数器频率,每秒计数

所以,你所拥有的是以Hz为单位测量的性能计数器频率。

对于它的价值,如果这样,我就不打印。这是一个整数值。最好保持这种打印方式。因此,假设您使用MS编译器,可以像这样打印:

printf("Ticks: %I64d\n", li.QuadPart);