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