c++ - CPU 上的时间比实际花费的要快

标签 c++ linux gcc cpu ctime

我想知道为什么我的整个应用程序运行时间不到 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/

相关文章:

c++ - 为什么 C++ 中的静态 thread_local 对象构造了两次?

linux - 配置 apache 服务器以访问文件以供 php 执行

linux - 使用 du 的输出,如何在 bash 中显示对应于高于或低于给定大小的文件的行?

c++ - 从外部使用 "class::func()"调用非静态函数或构造函数

c - 为什么编译器认为 GCC 中嵌套函数(GNU 扩展)的地址为 "not constant"?

c++ - 与 QBluetoothLocalDevice::allDevices() 的定义混淆

c++ - 我如何每秒仅处理 2 帧?如何退出 c 或 c++ 中的 while 循环?

c++ - 在给定指向该元素的指针的情况下查找 vector 中元素的索引

linux - 为什么不能使用 cat 逐行读取文件,其中每行都有分隔符

c - 忽略系统调用