【问题标题】:QueryPerformanceFrequency not matching CPU speed?QueryPerformanceFrequency 与 CPU 速度不匹配?
【发布时间】:2013-11-10 07:22:04
【问题描述】:

从这些看来,函数返回的值是以赫兹为单位的

QueryPerformaceFrequency()
Units of QueryPerformanceFrequency

运行英特尔酷睿 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) );

【问题讨论】:

    标签: c windows performance api kernel


    【解决方案1】:

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

    documentation 强调说:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-16
      • 1970-01-01
      • 2021-01-21
      • 1970-01-01
      • 1970-01-01
      • 2019-03-04
      • 1970-01-01
      相关资源
      最近更新 更多