我有一个关于在 Ubuntu 12.04 上测量 CPU 时间的问题。
我想在某个循环中使用 CPU 时间作为停止标准。什么是最好的方法?
while(....)
{
//main part
// get CPUTIME
if(CPUTIME>= Given_Time)
{
break;
}
}
1)clock()
如果我不太关心时间的分辨率,我可以使用。
time_t begin=clock();
....
time_t end=clock();
CPUTIME=(double)(end-begin)/(double)(CLOCKS_PER_SEC);
然而,time_t
许多是溢出的,因为运行时间可能很长(超过一个小时)。我该如何解决这个问题?
2)第二个选项是使用getrusage(int who, struct rusage *usage)
在循环中调用这个函数是否花费太多?
3)第三个选项是使用int clock_gettime(clockid_t clk_id, struct timespect *tp)
到目前为止,这是我的选项中最好的选择。
任何建议和意见都会有所帮助。