在C语言中实现跨平台高分辨率计时器?

3

我正在尝试通过移植一个应用程序来学习C语言。我正在寻找适用于Linux、Mac和Windows的高分辨率计时器。

我希望使用符合ANSI C99标准的工具。我正在使用MINGW和GCC,所以任何GNU库也应该可以使用,对吗?

我查阅了time.h,但所有的信息都警告说,在不同平台上clock(CPU时钟周期数)不可靠,你无法获得小于1秒的“实时”时间(而不是CPU时间)。

是否有类似于C++ Boost库的C语言库可供使用?


这不是最美观的解决方案,但您也可以使用GLFW库(小型OpenGL支持库)中的高精度计时器。它具有良好的可移植性,并且它使用系统上可用的最高精度计时器。因此,精度可能因不同平台而异。 - Athabaska Dick
GLFW 计时器已经被弃用。 - user697111
1
不,GLFW中的时间输入并没有被弃用。 - elmindreda
2个回答

2
尝试使用来自sys/time.h的gettimeofday。虽然这不是一个高分辨率计时器,但它比time函数更准确。

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

时钟 - 返回程序所使用的处理器时间。这不是“墙”时间。 - DanJ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接