理解clock_gettime()的不同时钟
嗨,我想使用clock_gettime()
函数来测量我的代码的性能。
我无法理解手册页描述中函数中使用的各种时钟之间的区别。 ESP
CLOCK_REALTIME, CLOCK_PROCESS_CPUTIME_ID CLOCK_THREAD_CPUTIME_ID
有人可以解释每个钟表的作用吗?
CLOCK_REALTIME
报告实际的挂钟时间。
CLOCK_MONOTONIC
用于测量相对实时。 它以与实际时间流相同的速率前进,但它不会受到系统时钟的手动或自动(NTP)调整的不连续性影响。
CLOCK_PROCESS_CPUTIME_ID
用于测量进程消耗的CPU时间量。
CLOCK_THREAD_CPUTIME_ID
用于测量线程消耗的CPU时间量,但Linux不支持它。 glibc通过简单地返回自创建线程之后的进程消耗的CPU时间量来模拟它。
更新:似乎现代内核和glibc现在正确支持CLOCK_THREAD_CPUTIME_ID
。 我没有详细介绍它何时修复。