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中的跨平台高分辨率计时器?的主要内容,如果未能解决你的问题,请参考以下文章