Я пытаюсь аппроксимировать накладные расходы на вызов функции в 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), чем при последующих вызовах. Почему это происходит?
t1
иt2
за пределы цикла, а затем разделить время на 10? - person Weather Vane   schedule 19.09.2016