仿照网上的 OpenMP 示例写了个测试程序,然而并没有提升效率,是哪里的问题?
#include
#include
#include
#include
#include
double calc(void)
{
double sum = 0;
for (size_t i = 0; i < 10000000; ++i) {
sum += atan((int)((i * 1.0 + (1.0 + rand() % 100)) * 3.14) % 10);
}
return sum;
}
int main(void)
{
clock_t c;
double sec;
double results[40];
size_t i;
c = clock();
srand(time(NULL));
#pragma omp parallel for
for (i = 0; i < 40; ++i) {
results[i] = calc();
}
sec = (clock() - c) * 1.0 / CLOCKS_PER_SEC;
printf("%gs\n", sec);
return 0;
}
两个版本的运行结果:
跑 OpenMP 版本时四个核的使用率是蛮高的。