我试图逼近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)。为什么会这样?