【发布时间】:2012-09-05 17:10:26
【问题描述】:
在计时函数中,time、clockgetrusage、clock_gettime、gettimeofday和timespec_get,我想清楚地了解它们是如何实现的以及它们的返回值是什么以便知道在什么情况下我必须使用它们。
首先,我们需要将返回挂钟值的函数与返回进程或线程值的函数进行比较。 gettimeofday 返回挂钟值,clock_gettime 返回挂钟值或进程或线程值,具体取决于传递给它的Clock 参数。 getrusage 和 clock 返回进程值。
然后第二个问题是关于这些功能的实现以及它们的准确性。这些功能使用哪种硬件或软件机制。
似乎getrusage 仅使用内核刻度(通常为 1 毫秒长),因此不能比毫秒更准确。这样对吗?
那么getimeofday 函数似乎使用了可用的最准确的底层硬件。因此,在最近的硬件上,它的精度通常是微秒(由于 API 的原因不能更高)。
clock 怎么样,手册页谈到“近似”,这是什么意思?
clock_gettime 呢,API 是纳秒级的,是不是意味着如果底层硬件允许就可以这么精确呢?单调性呢?
还有其他功能吗?
【问题讨论】:
标签: c linux time linux-kernel