最近在学openmp,写了一个简单的代码,如下

void test()
{
     int a = 0;
     clock_t t1 = clock();

    #pragma omp parallel for

     for (int i = 0; i < 100000000; i++)
     {
         a = i+1;
     }
     clock_t t2 = clock();
     printf("Time = %d\n", t2-t1);
}

 我的电脑是双核的,运行后结果发现,确实程序在并行执行时(配置openmp属性)比串行执行(不配置openmp属性)快两倍。

但是问题来了,当我把循环次数变小时,并行执行速度却远远不如串行速度。这是为什么?

是不是并行执行时需要一些啥开销之类的,当循环次数少时,开销比重很大?有高手指导一下吗?