我想知道为什么我的整个应用程序运行时间不到 8 秒
,而从 clock_gettime
获取的时间是 19.3468 秒
,这超过了是现实情况的两倍。问题出在哪里?
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &time_start);
... // many calculations
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &time_stop);
double time_diff=(time_stop.tv_sec-time_start.tv_sec+
(1e-9)*(time_stop.tv_nsec-time_start.tv_nsec);
更新:
我没有明确使用任何 OpenMP。
最佳答案
如果您想测量总运行时间(包括阻塞等待 IO 所花费的时间),则应使用
CLOCK_MONOTONIC,但它还包括程序尝试运行时因调度其他进程而导致的速度减慢.
关于c++ - CPU 上的时间比实际花费的要快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34459649/