这是我的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秒似乎更合理.
该clock()函数返回进程自启动以来使用的CPU时间量,而不是根据实时时钟的绝对时间.
在另一个评论中,你说这CODE_BLOCK是一个并行循环 - 这意味着在你的情况下,它在2秒的真实("挂钟")时间内使用相当于11.41秒的CPU时间.显然你并行使用大约6个CPU的功能.