在计时函数time
、clock
、getrusage
、clock_gettime
、gettimeofday
和timespec_get
中,我想清楚地了解它们是如何实现的,以及它们的返回值是什么,以便知道我必须在哪种情况下使用它们.
首先,我们需要将返回wall-clock values的函数与返回process or threads values的函数进行分类.gettimeofday
返回挂钟值,clock_gettime
返回挂钟值or进程或线程值,具体取决于传递给它的Clock
参数.getrusage
和clock
返回过程值.
然后,第二个问题涉及这些功能的实现,以及它们的准确性.这些功能使用哪种硬件或软件机制.
似乎getrusage
只使用内核刻度(通常为1ms长),因此不可能比ms更精确.是对的吗?
则getimeofday
函数似乎使用可用的最精确的底层硬件.因此,在最近的硬件上,它的精度通常是微秒级(由于API的原因不能更高).
手册页上提到的"近似"clock
是怎么回事,它是什么意思?
那么clock_gettime
呢,API的单位是纳秒,这是否意味着如果底层硬件允许的话,它就可以如此精确呢?单调性呢?
还有其他功能吗?