如何衡量创建和启动线程所需的时间? (Linux,pthreads或boost :: thread)。
感谢您的建议!
答案 0 :(得分:2)
您应该指定您想要测量的内容,因为至少有两种可能的解释(原始线程在pthread_create
内“忙”的时间与从调用pthread_create
到调用CLOCK_MONOTONIC
的时间相比其他线程实际执行其第一条指令。)
在任何一种情况下,您都可以在调用pthread_create
之前和之后或调用之前使用clock_gettime
和phtread_create
查询单调实时,并作为线程函数内的第一个内容。然后,从第一个值中减去第二个值。
要了解CLOCK_THREAD_CPUTIME_ID
内部花费的时间,nanosleep
是另一种选择,因为这只会计算线程使用的实际时间。
修改强>
关于上述评论中添加的信息,如果您需要在“正常调度量化”范围内的“非定期执行操作”,您可以创建一个单独的线程timerfd
15或30毫秒。当然,睡眠不是非常准确或可靠,所以你可能想要例如在{{1}}上阻止(如果可移植性不是最高优先级,否则使用信号传递计时器)
使用单个计时器/等待计划不规则间隔也不是什么大问题,您只需要跟踪下一个事件到期的时间。这就是现代操作系统的用法(阅读“计时器合并”)。