clock_getres
的第一個參數是指定時間的類型,常見的類型有:
https://blog.gtwang.org/programming/measure-the-execution-time-in-c-language/2/#google_vignette
CLOCK_REALTIME
:系統的實際時間(wall-clock time)。CLOCK_REALTIME_COARSE
:系統的實際時間(wall-clock time),取得速度快,但精確度校低。CLOCK_MONOTONIC
:單調遞增時間(monotonic time),這個時間會非常穩定的持續遞增,不會因為系統時間改變而有變動,適合用於測量程式執行效能。CLOCK_MONOTONIC_COARSE
:與CLOCK_MONOTONIC
類似,取得速度快,但精確度校低。CLOCK_MONOTONIC_RAW
:與CLOCK_MONOTONIC
類似,但是它是從硬體時鐘所讀取出來的值。CLOCK_PROCESS_CPUTIME_ID
:程式行程的 CPU time,這個時間包含所有的執行序所花費的時間。CLOCK_THREAD_CPUTIME_ID
:程式單一執行序所耗費的時間。
https://www.cnblogs.com/memo-store/p/5658277.html
CLOCK_REALTIME,可以理解为wall time,即是实际的时间。用户可以使用命令(date)或是系统调用去修改。如果使用了NTP, 也会被NTP修改。当系统休眠(suspend)时,仍然会运行的(系统恢复时,kernel去作补偿)。
CLOCK_MONTONIC,是单调时间,即从某个时间点开始到现在过去的时间。用户不能修改这个时间,但是当系统进入休眠(suspend)时,CLOCK_MONOTONIC是不会增加的。
CLOCK_MONOTONIC_RAW,和CLOCK_MONOTONIC类似,但不同之处是MONOTONIC_RAW不会受到NTP的影响。CLOCK_MONOTONIC会受到NTP的影响并不是说NTP会去修改CLOCK_MONOTONIC,使其不连续,而是说当NTP server 和本地的时钟硬件之间有问题,NTP会影响到CLOCK_MONOTONIC的频率,但是MONOTONIC_RAW则不会受其影响。 其区别可以参考 Difference between MONOTONIC and MONOTONIC_RAW
CLOCK_BOOTTIME,与CLOCK_MONOTONIC类似,但是当suspend时,会依然增加。可以参考LWN的这篇文章 introduce CLOCK_BOOTTIME
沒有留言:
張貼留言