其中计时功能,time
,clock
getrusage
,clock_gettime
,gettimeofday
和timespec_get
,我想清楚地了解它们是如何实现的,为了知道在什么情况下我必须使用他们什么是他们的返回值。在Linux中测量时间 - 时间vs时钟vs getrusage vs clock_gettime vs gettimeofday vs timespec_get?
首先,我们需要进行分类的功能恢复挂钟值比较返回处理功能或线程值。 gettimeofday
返回挂钟值,clock_gettime
返回挂钟值或进程或线程值,具体取决于传递给它的参数Clock
。 getrusage
和clock
返回过程值。
然后第二个问题关于这些功能的实现,因此,它们的准确性。这些功能使用哪种硬件或软件机制。
看来getrusage
只使用内核tick(通常为1ms长),因此不能比ms更准确。这样对吗? 然后getimeofday
函数似乎使用了最准确的底层硬件。因此,它的准确性通常是在最近的硬件上的微秒(不能因为API)。 关于clock
,手册页讲的是“逼近”,这是什么意思? clock_gettime
怎么样,API是纳秒,这是否意味着它可以如此精确,如果底层硬件允许它?单调性怎么样?
还有其他的功能吗?
你现在有18个代表处点;-) –
的Mac OS X没有'clock_gettime',因此,使用的[ 'gettimeofday()'](http://www.songho.ca/misc/timer/timer.html)比'clock_gettime()'更具多功能性'' – bobobobo
@bobobobo我同意OS X没有clock_gettime() ),但gettimeofday()不幸地测量了挂钟时间。我更新了我的帖子以提供此信息。如果ms精度足够,那么我推荐使用getrusage()作为定时器的最佳时钟。 –