I am trying to optimize our gettimeofday() system call on Redhat Linux. By their documentation it can be speed by running the call in the user land using virtual dynamic shared object (VDSO). I was curious how can I mesure the speed of the call in the first place? I would like to make the change and then compare it against my previous results
+2
A:
Pseudocode:
- call
gettimeofday()
and save result ina
- call
gettimeofday()
a million times - call
gettimeofday()
and save result inb
- Calculate
(b-a)/1,000,000
Rationale: The two bounding calls to gettimeofday()
should not make much of an impact on the loop. It may feel strange to call the function that you want to time but that's OK.
Aaron Digulla
2010-09-24 13:24:22
+1 Common sense wins.
Mike Dunlavey
2010-09-24 13:53:17
A:
If your on an Intel platform, IAPerf.H has some macros which make high resolution timing straightforward.
PERFINITMHZ(1200) // Set the clockspeed of your processor
PERFSTART
gettimeofday();
PERFSTOP
PERFREPORT
It's using the Time Stamp Register to get the time so you avoid the cost of a sys call and get accurate timing. You may still want to call gettimeofday a million times and divide the result if the results aren't accruate enough.
Robert Christie
2010-09-24 13:41:11