C 连续执行OpenMP脚本的时间问题

C 连续执行OpenMP脚本的时间问题,c,terminal,openmp,linux-mint,xfce,C,Terminal,Openmp,Linux Mint,Xfce,我对C OpenMP脚本的执行时间有问题 使用gettimeofday()函数在代码块上完成脚本内的计时: gettimeofday(&tim, NULL); double t1=tim.tv_sec+(tim.tv_usec/1000000.0); .. Timed Code Here gettimeofday(&tim, NULL); double t2=tim.tv_sec+(tim.tv_usec/1000000.0); printf("%.6lf seconds e

我对C OpenMP脚本的执行时间有问题

使用gettimeofday()函数在代码块上完成脚本内的计时:

gettimeofday(&tim, NULL);
double t1=tim.tv_sec+(tim.tv_usec/1000000.0);

.. Timed Code Here

gettimeofday(&tim, NULL);
double t2=tim.tv_sec+(tim.tv_usec/1000000.0);
printf("%.6lf seconds elapsed\n", t2-t1);
但是,当我连续运行脚本时,每次执行的时间都会增加:

脚本从昨天开始就没有被编辑过,因为我没有这个问题。另外,我发现当离开一段时间(比如10-20秒)然后重新运行程序执行时,时间开始减少

我唯一的猜测是,这与过程本身有关。我使用的是GCC版本 4.8.2使用XFCE(gcc 4.8.2-19ubuntu1)在Linux Mint 17上编译:

有什么想法吗

编辑: 从time.h为测试添加了时钟()

start_t = clock();

.. Timed Code Here

total_t = (double)(end_t - start_t) / CLOCKS_PER_SEC;
printf("Time.h clock result: %ld\n", total_t);
结果:

时钟也在增加,尽管程序中的工作负载是相同的(如前所述,如果我等待~20秒,执行时间会更短)

编辑2:

当在另一台机器上运行时,程序连续运行的结果是正确的,因此问题出在我的系统的某个地方

编辑3:

使用同步没有帮助,今天早上我的计时似乎在跳跃,而不是简单地增加,我想这一定是缓存或内存问题:

编辑4:

使用vmstat获取内存/cpu信息:


这个问题与bash有什么关系?--我在这里只看到C代码对不起,我是想标记terminal not bash,edited。它与定时代码有什么关系!代码总是做完全相同的事情吗,100%确定?否则,您在您的机器上运行什么其他事情?您是否尝试在不同的机器上执行代码?这可能会导致g我有一些提示,是系统还是代码导致了问题。@Turing85-在不同的机器上运行会给我一组正确的结果(因此每次运行不会增加时间)。因此问题与我的机器有关,但我不知道如何修复它
start_t = clock();

.. Timed Code Here

total_t = (double)(end_t - start_t) / CLOCKS_PER_SEC;
printf("Time.h clock result: %ld\n", total_t);