在 Ubuntu 中获取 CPU 时间
Getting CPU time in Ubuntu?
我有一个关于在 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)
到目前为止,这是我选择的最佳选择。
任何建议和意见都会有所帮助。
根据循环运行的速度,您可能不希望每个周期都调用检查函数。也许添加一个循环计数器并仅在以下情况下检查 CPU 时间,例如,(i % 1000) == 0
.
回答你的问题:我个人会使用clock_gettime(CLOCK_PROCESS_CPUTIME_ID, ...)
,因为librt
,这个函数所在的库,是专门为这样的任务而制作的。但是,没有理由不能使用其他两个;您可以通过检测值何时换行并有一个单独的计数器来计算其换行次数,从而轻松检测带有clock()
溢出。
相关文章:
- 分别测量每个线程上花费的 CPU 时间(C++)
- 超过CPU时间限制:当MPI_Sent一个非常大的int*时
- 如何测量一组特定线程的 CPU 时间?
- 如何以C++而不是 CPU 时间测量挂钟时间
- 将返回 CPU 时间提升为 0
- C++中的双感叹号(!!)会花费更多的CPU时间吗
- 即使使用睡眠,线程也不会放弃CPU时间
- 以C++为单位测量程序的 CPU 时间和挂钟时间
- 在 Windows 上以C++计算 CPU 时间
- 时间短函数与 CPU 时间使用 RTEMS 操作系统
- PDH 无法通过 PdhAddCounter() 访问总 CPU 时间
- 二叉搜索真的是在 0 时钟 CPU 时间内执行的吗?
- 我应该检查什么:cpu时间还是墙时间
- 使用MPI时计算CPU时间
- 堆排序CPU时间
- rusage的进程/线程的Cpu时间不可能
- 如何在 Windows 上以 C++ 为单位测量 CPU 时间并包括 system() 的调用
- 在 Ubuntu 中获取 CPU 时间
- 为什么使用 clock() 在测量 CPU 时间时得到减号
- 使用 GetProcessTimes 测量 Windows 上的 CPU 时间