c++ - 在 C++ 中测量时间

标签 c++ time

这是我的 C++ 代码。

double start_time = time(NULL);
double start_clock = clock();

#pragma omp parallel for private(i) 
for(i=0;i<max_i;i++)
      PROCESS(i);

double end_time = time(NULL);
double end_clock = clock();

printf("%lf second(s)\n", end_time-start_time);
printf("%lf second(s)\n", (end_clock-start_clock)/CLOCKS_PER_SEC);

这是输出。

took 2.000000 second(s)
took 11.410000 second(s)

有谁知道为什么这些不一致?还有其他测量方法吗?顺便说一句,根据我在这里看到的时间,2 秒似乎更合理。

最佳答案

clock() 函数返回您的进程自启动以来使用的 CPU 时间,而不是根据实时时钟的绝对时间。 p>

在另一条评论中,您说 CODE_BLOCK 是一个并行循环 - 这意味着在您的情况下,它在 2 秒的实际(“挂钟”)时间中使用了 11.41 秒的 CPU 时间.显然,您正在并行使用大约 6 个 CPU 的能力。

关于c++ - 在 C++ 中测量时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12223842/

相关文章:

java - 网址响应时间

c++ - 如果使用基指针声明,为什么简单析构函数不删除派生对象

python - 如果经常使用计算结果,我应该将其存储在变量中吗?

php - 在 mysql/php 中每小时批量显示 100 个海量数据

c++ - 为什么相同数组代码的执行时间存在差异?

c++ - 条件渲染

c++ - 不要删除不是 owner<T> 的原始指针 (i.11)

c++ - 自动鼠标点击使屏幕变黑

c++ - 如何使用 OpenCV 在 C++ 中实现高效的 im2col 函数?

java - 在 Java 中只处理小时和分钟的最佳方法