您可以计算它的执行时间并从挂钟时间减少它,而不是计算进程空闲时间。
在符合较新的 POSIX 标准(阅读 Linux)的操作系统中,您可以使用以下功能轻松做到这一点clock_gettime
:
CLOCK_REALTIME
系统范围的实时时钟。
CLOCK_PROCESS_CPUTIME_ID
来自 CPU 的高分辨率每进程计时器。
CLOCK_THREAD_CPUTIME_ID
线程特定的 CPU 时间时钟。
您可以使用CLOCK_REALTIME
获取挂钟时间,并获取程序开始和结束时返回的时间之间的差,以了解程序运行了多长时间(包括空闲时间)。使用CLOCK_PROCESS_CPUTIME_ID
,您可以以类似的方式准确测量您的进程在 CPU 上运行所花费的时间。使用CLOCK_THREAD_CPUTIME_ID
您甚至可以分别获取每个线程的执行时间。
注意:如果一个进程/线程从一个 CPU 迁移到另一个,CLOCK_*_CPUTIME_ID
可能会变得不一致。记在脑子里。如果确实发生了,您可以尝试将您的进程或其线程绑定到特定的 CPU。
附带说明一下,time(1)
它会为您提供有关进程执行时间的信息,因此,如果挂钟时间足够大,可以通过手表进行测量,您也可以使用此工具。
PS不要忘记链接-lrt
。