【问题标题】:GetTickCount functionGetTickCount 函数
【发布时间】:2011-03-28 01:11:48
【问题描述】:

我有一个关于 GetTickCount 函数的问题, 我的代码中有两个调用这个函数,它们之间有几个命令,两个调用中的函数返回相同的计数。 即

var1 = GetTickCount();
code
:
:
var2 = GetTickCount();

var1 和 var2 的值相同。

有人可以帮忙吗?

【问题讨论】:

标签: c time gettickcount


【解决方案1】:

假设这是 Windows GetTickCount 调用,这是完全合理的:

GetTickCount 的分辨率 功能仅限于分辨率 系统定时器,即 通常在 10 范围内 毫秒到 16 毫秒。

请注意,开始时它仅测量 毫秒 - 现在您可以在一毫秒内完成很多工作。

文档继续说:

如果您需要更高分辨率的计时器, 使用 multimedia timerhigh-resolution timer.

也许QueryPerformanceCounter 更合适?

【讨论】:

  • @johan Skeet 但是以这种方式解析系统计时器是什么意思?
  • @Miss:你可以把它想象成“时钟滴答的频率”。
【解决方案2】:

如果您指的是 Windows API 调用,请阅读 this。 我猜您正在尝试短时间间隔,因此本段是相关的。你的时间比那个间隔更短吗?如果是这样,也许可以改用 QueryPerformanceCounter。

GetTickCount 的分辨率 功能仅限于分辨率 系统定时器,即 通常在 10 范围内 毫秒到 16 毫秒。这 GetTickCount 的分辨率 功能不受影响 作出的调整 获取系统时间调整函数。

【讨论】:

    【解决方案3】:

    如果你走 QueryPerformanceCounter 路线,你需要注意硬件相关wierdness。已经有一段时间了,不知道这种事情还会不会发生。

    您可能还想使用look at this link,因为它有一个很好的示例应用程序,可以比较 QueryPerformanceCounter、GetTickCount 和 TimeGetTime

    【讨论】:

    • 不幸的是,指向 Nvidia 的链接不再有效。有人找到替代来源了吗?
    • @blerontin 我更新了链接。第二个是使用网络存档。那是 5 年前的事了,所以它可能不适用于当前的硬件。
    【解决方案4】:

    来自MSDN

    GetTickCount 的分辨率 功能仅限于分辨率 系统定时器,即 通常在 10 范围内 毫秒到 16 毫秒。这 GetTickCount 的分辨率 功能不受影响 作出的调整 获取系统时间调整函数。

    经过的时间存储为 DWORD 价值。因此,时间会结束 如果系统运行,则大约为零 连续 49.7 天。避免 这个问题,使用GetTickCount64 功能。否则,检查一个 比较时的溢出条件 次。

    如果您需要更高分辨率的计时器, 使用多媒体定时器或 高分辨率计时器。

    【讨论】:

      【解决方案5】:

      GetTickCount 的分辨率为一毫秒(实际上是几毫秒)。您在两者之间调用的函数很可能花费了不到 1 毫秒的时间。

      【讨论】:

      • 实际上更糟糕:大约 10 毫秒的分辨率
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-16
      • 1970-01-01
      • 2012-05-05
      • 1970-01-01
      相关资源
      最近更新 更多