Among the timing functions, time
, clock
getrusage
, clock_gettime
, gettimeofday
and timespec_get
, I want to understand clearly how they are implemented and what are their return values in order to know in which situation I have to use them.
First we need to classify functions returning wall-clock values compare to functions returning process or threads values. gettimeofday
returns wall-clock value, clock_gettime
returns wall-clock value or process or threads values depending on the Clock
parameter passed to it. getrusage
and clock
return process values.
Then the second question regards the implementation of these functions and as a consequence, their accuracy. Which hardware or software mechanism does these functions use.
It seems that getrusage
uses only the kernel tick (usually 1ms long) and as a consequence can't be more accurate than the ms. Is it right?
Then the getimeofday
function seems to use the most accurate underlying hardware available. As a consequence its accuracy is usually the microsecond (can't be more because of the API) on recent hardware.
What about clock
, the man page speak about "approximation", what does it mean?
What about clock_gettime
, the API is in nanosecond, does it means that it's able to be so accurate if underlying hardware allows it? What about monotonicity?
Are there any other functions?
Question&Answers:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…