最佳答案
在计时函数 time
、 clock
、 getrusage
、 clock_gettime
、 gettimeofday
和 timespec_get
中,我想清楚地了解它们是如何实现的,它们的返回值是什么,以便了解在什么情况下我必须使用它们。
首先,我们需要将返回 挂钟值挂钟值挂钟值的函数与返回 进程或线程值的函数进行分类。gettimeofday
返回挂钟值,clock_gettime
返回挂钟值 或者进程或线程值,这取决于传递给它的 Clock
参数。getrusage
和 clock
返回进程值。
第二个问题是关于这些功能的实现以及它们的准确性。这些功能使用哪种硬件或软件机制。
看起来 getrusage
只使用内核刻度(通常1毫秒长) ,因此不能比 ms 更精确,对吗?
然后,getimeofday
函数似乎使用了最精确的底层硬件。因此,在最近的硬件上,它的精确度通常是微秒(由于 API 的缘故,不可能超过微秒)。
那么 clock
呢,手册中提到的“近似”是什么意思呢?
那么 clock_gettime
呢,它的 API 是纳秒级的,这是否意味着如果底层硬件允许的话,它能够如此精确呢?那么单调性呢?
还有其他功能吗?