Understanding the different clocks of clock_gettime()

c, c++, clock

Solution

`CLOCK_REALTIME` reports the actual wall clock time.

`CLOCK_MONOTONIC` is for measuring relative real time. It advances at the same rate as the actual flow of time but it's not subject to discontinuities from manual or automatic (NTP) adjustments to the system clock.

`CLOCK_PROCESS_CPUTIME_ID` is for measuring the amount of CPU time consumed by the process.

`CLOCK_THREAD_CPUTIME_ID` is for measuring the amount of CPU time consumed by the thread. It's supported by modern kernels and glibc since 2.6.12, but on older linux kernels glibc emulates it badly by simply returning the amount of CPU time consumed by the process since the moment the thread was created.

http://man7.org/linux/man-pages/man2/clock_gettime.2.html

Problem

Hi I wanted to use the `clock_gettime()` function for measuring the performance of my code. I am unable to understand the difference between the different kinds of clocks used in the function from the man page descriptions. esp ``` CLOCK_REALTIME, CLOCK_PROCESS_CPUTIME_ID CLOCK_THREAD_CPUTIME_ID ``` Can someone explaing what each of these clocks do?

Original source

Related problems