用C++测量时间

Moh*_*imi 1 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);
Run Code Online (Sandbox Code Playgroud)

这是输出.

took 2.000000 second(s)
took 11.410000 second(s)
Run Code Online (Sandbox Code Playgroud)

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

Gre*_*ill 8

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

在另一个评论中,你说这CODE_BLOCK是一个并行循环 - 这意味着在你的情况下,它在2秒的真实("挂钟")时间内使用相当于11.41秒的CPU时间.显然你并行使用大约6个CPU的功能.