Повлияет ли кэширование на циклы оценки времени?

Рассмотрим ситуацию, когда я использую следующий код, чтобы оценить время, затраченное функцией на выполнение.

long double Measure_micro_sec ( void (*foo) () )
{
auto start = std::chrono::system_clock::now();
for(long i =0; i <1000000; ++i)
{
foo();
foo();
if(i%1000 == 0)
std::cout << i << "iterations\n";
}
auto end = std::chrono::system_clock::now();
std::chrono::duration<long double> t_1 = end - start;

auto start = std::chrono::system_clock::now();
for(long i =0; i <1000000; ++i)
{
foo();
foo();
foo();
if( i%1000 == 0 )
std::cout << i << "iterations\n";
}
auto end = std::chrono::system_clock::now();
std::chrono::duration<long double> t_2 = end - start;

return (t_2.count() - t_1.count());
}

В приведенном выше коде изменение общего времени выполнения циклов отличается (теоретически) в n раз (1000000) временем выполнения foo(), Поэтому время выполнения foo() является (t2 - t1)/n секунды или (t2 - t1) микросекунды.

Будет ли функция foo() быть кэшированным? Повлияет ли это на вычисление времени выполнения функции foo ()? т.е. будет ли разница во времени (t2-t1) быть другим, когда foo() кэшируется и foo() не кешируется

Рассматривать foo() быть :

void foo()
{
std::cout << "Example function\n";
}

Как сказали @Hugo и @LightnessRacesinOrbit, кэширование зависит от функции. Будет ли эта функция кэшироваться?

РЕДАКТИРОВАТЬ: Я использовал std::chrono::system_clock для использования в качестве таймера

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]