其中計時功能,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()作爲定時器的最佳時鐘。 –