C中的跨平台高分辨率计时器?

Posted

技术标签:

【中文标题】C中的跨平台高分辨率计时器?【英文标题】:cross platform high res timer in C? 【发布时间】:2011-04-19 04:13:56 【问题描述】:

我正在尝试通过移植我的一个应用程序来学习 c。我正在寻找适用于 linux、mac 和 windows 的高分辨率计时器。

尝试使用 ANSI C99 的内容。我正在使用 mingw 和 gcc,所以任何 GNU 库也应该没问题?

我查看了 time.h;但是我读到的所有关于时钟(cpu 滴答声)的警告在平台上都不可靠,也不能获得小于 1 秒的“实时”(而不是 cpu 时间)分辨率。

有没有类似 Boost for C 的库?

【问题讨论】:

这不是最漂亮的解决方案,但您也可以使用来自GLFW 库(小型 OpenGL 支持库)的高精度计时器。它非常便携,并且使用系统上可用的最高精度计时器。因此,不同平台的精度可能会有所不同。 GLFW 计时器已被弃用。 不,不建议在 GLFW 中输入时间。 【参考方案1】:

从 sys/time.h 尝试gettimeofday。虽然这不是高分辨率计时器,但它比time 函数更准确。

【讨论】:

【参考方案2】:

你能解释一下你所说的 clock() 不“可靠”是什么意思吗?该函数返回一个clock_t 类型的值,表示自程序启动以来经过了多少个滴答。每秒的滴答数由宏 CLOCKS_PER_SEC 定义,在大多数系统上为 1000,这意味着每个滴答对应于一毫秒的时间。希望这个分辨率就足够了。

【讨论】:

clock - 返回程序消耗的处理器时间。这不是“墙”时间

以上是关于C中的跨平台高分辨率计时器?的主要内容,如果未能解决你的问题,请参考以下文章

C中的最佳计时方法?

C ++ Windows中的高分辨率计时器库? [复制]

用于定期调用的现代高分辨率计时器

实现高分辨率计时器的最佳方法

如何使用C++11实现跨平台的定时器timer

C中函数的毫秒精度计时 - 跨平台