【发布时间】:2012-06-16 02:57:38
【问题描述】:
我有一个关于在 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)
到目前为止,这是我选项中的最佳选择。
任何建议和cmets都会有所帮助。
【问题讨论】:
标签: c++ ubuntu-11.10