stlab.adobe.com Adobe Systems Incorporated

#include <timer.hpp>

Detailed Description

Comparisons between two timer_t considers only the last split time.

Model Of:
Rationale:
A class that measures elapsed time can be useful when debugging, optimizing, or comparing implementations. timer_t utilizes the most accurate timing API a platform has to offer to maximize accuracy, while keeping the public API generic.
Example:
Checking the speed between two implementations might look like this:
timer_t timer1;
do_my_func();
timer1.split();
timer_t timer2;
do_their_func();
timer2.split();
if (timer1 == timer2)
std::cout << "Functions are equally fast" << std::endl;
else if (timer1 < timer2)
std::cout << "My function is faster" << std::endl;
else
std::cout << "Their function is faster" << std::endl;
Most of the time, however, you will want to take several measurements and compare the averages in order to gain a more accurate understanding of the cost of an implementation:
timer_t timer1;
timer_t timer2;
for (std::size_t i(0); i < sample_count_k; ++i)
{
timer1.reset();
do_my_func();
timer1.accrue();
timer2.reset();
do_their_func();
timer2.accrue();
}
double my_avg(timer1.accrued_average());
double their_avg(timer2.accrued_average());
if (my_avg == their_avg)
std::cout << "Functions are equally fast" << std::endl;
else if (my_avg < their_avg)
std::cout << "My function is faster" << std::endl;
else
std::cout << "Their function is faster" << std::endl;
Note that in the above case the two implementations are tested in the same for loop. This is in attempt to distribute possible overhead from memory locality issues (i.e., do_my_func could push memory used by do_their_func out of the cache, unfairly slowing do_their_func down (or vice versa).
Depending on what you are measuring in your own code, measurement strategies may vary from the ones used above.

Copyright © 2006-2007 Adobe Systems Incorporated.

Use of this website signifies your agreement to the Terms of Use and Online Privacy Policy.

Search powered by Google