第一次调用C函数比后续调用慢

时间:2016-09-18 22:29:01

标签: c function gcc optimization loop-unrolling

我试图逼近C中的函数调用开销。所以我有一个带属性的空函数((optimize(“O0”))),所以它没有被优化掉GCC。

int __attribute__((optimize("O0"))) func(int a)
{
    return (a+a);
}

我正在使用论文http://www.intel.com/content/www/us/en/embedded/training/ia-32-ia-64-benchmark-code-execution-paper.html中描述的方法 确定时间,所以非常准确。

所以我多次在循环中调用该函数并测量执行时间:

for (i = 0; i < 10; i++)
{
    t1 = start_timer();
    x = func(i);
    t2 = end_timer();

    time = t2 - t1;
}

我注意到第一次调用该函数(i = 0)时,它比后续调用需要更多周期(~10x)。为什么会这样?

0 个答案:

没有答案