Consider a situation where I use the following code to evaluate time taken by a function to execute.
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());
}
In the above code the change in total time of execution of the loops differ by (theoretically) n times (1000000) the execution time of foo()
. Therefore the execution time of foo()
is (t2 - t1)/n
seconds or (t2 - t1)
micro seconds.
Will the function foo()
be cached? Will it affect the computation of the execution time of foo()? i.e. will the time difference (t2-t1
) be different for when foo()
is cached and foo()
is not cached.
Consider foo()
to be :
void foo()
{
std::cout << "Example function\n";
}
As @Hugo and @LightnessRacesinOrbit have said that caching is dependant on the function. Will this function be cached?
EDIT: I have used std::chrono::system_clock
for use as timer