Jonathan
Jonathan

Reputation: 167

Timing a function in microseconds

Hey guys I'm trying to time some search functions I wrote in microseconds, and it needs to take long enough to get it to show 2 significant digits. I wrote this code to time my search function but it seems to go too fast. I always end up getting 0 microseconds unless I run the search 5 times then I get 1,000,000 microseconds. I'm wondering if I did my math wrong to get the time in micro seconds, or if there's some kind of formatting function I can use to force it to display two sig figs?

clock_t start = clock();
index = sequentialSearch.Sequential(TO_SEARCH);
index = sequentialSearch.Sequential(TO_SEARCH);
clock_t stop = clock();
cout << "number found at index " << index << endl;
int time = (stop - start)/CLOCKS_PER_SEC;
time = time * SEC_TO_MICRO;
cout << "time to search = " << time<< endl;

Upvotes: 1

Views: 2521

Answers (2)

Dampsquid
Dampsquid

Reputation: 2474

Use QueryPerformanceCounter and QueryPerformanceFrequency, assuming your on windows platform

here a link to ms KB How To Use QueryPerformanceCounter to Time Code

Upvotes: 0

Matt T
Matt T

Reputation: 511

You are using integer division on this line:

int time = (stop - start)/CLOCKS_PER_SEC;

I suggest using a double or float type, and you'll likely need to cast the components of the division.

Upvotes: 3

Related Questions