C程序的时间测量值为0

时间:2017-02-01 17:44:37

标签: c performance time-measurement

以下代码在codeblocks,gcc编译器中运行。

#include <sys/time.h>
#include<stdio.h>
int sumN(int n) {
int i,sum;
for(i=0; i<n; i++) {
    sum += i;
}
return sum;
}

int main() {
struct timeval stop, start;
int i;

for(i=0; i<10000;i+=100)
    {
        gettimeofday(&start, NULL);
        sumN(i);
        gettimeofday(&stop, NULL);
        printf("%d : %lu\n",i, stop.tv_usec - start.tv_usec);
    }
return 0;
}

我得到以下输出。 gettimeofday函数有问题吗?或者输出是对的?我还需要根据函数的多个输入大小和函数执行所花费的时间来绘制图形。 enter image description here

1 个答案:

答案 0 :(得分:1)

函数it(testNumber++ + " ddl de países debería estar oculto", function () { pages.register.rbdLocalCountryTrue.click().then(function () { expect(pages.register.ddlCountries.isPresent()).toBeTruthy(); expect(pages.register.ddlCountries.isDisplayed()).toBeFalsy(); }); }); 的调用已经过优化(我猜你没有用-O0编译),因为根本没有使用返回的值。您可以在生成的程序集中看到它:

sumN(i)

正如您所看到的,... call gettimeofday xorl %esi, %esi movq %rsp, %rdi call gettimeofday ... 之间没有sum(N)的来电。

使用返回的值,它不会被优化:

gettimeofday