I just use clock. such as:
clock_t Start = clock();
// Map find is so fast one search reports 0ns
for ( int i = 0; i < 1000; ++i )
FindInMap( "Bogus", "Bogus", MapData );
clock_t End = clock();
std::cout << "Search for non existant entry in Map: " <<
static_cast<double>( End - Start ) / 1000.0 << "ns\n";
You would need to include <ctime>
I am not sure if it's supposed to be std::clock or not (not
using namespace std, yet it finds it anyway in windows).
If you include <ctime>, it's suppose to be std::clock, and only
std::clock. If you include <time.h>, it's suppose to be both
std::clock and ::clock. To date, I've yet to see a conforming
implementation; I include <time.h> and use clock (no :
, and
that seems to work everywhere.
The problem with this solution, per se, is that you really need
something to ensure that the optimizer doesn't eliminate the
find completely. What I've used, to date, is to put the
fonction to be tested in a virtual function in a derived class,
and to ensure that it uses the results of what I'm testing to
update something in the object. This seems to have worked so
far, but one day or other, I'm sure that compilers will make it
insufficient as well.
If anyone's interested, the code is in BenchHarness, in the Test
subsystem at my site (
http://kanze.james.neuf.fr/code-en.html,
when it's working).