views:

74

answers:

4

I want to store event time. I found these two functions, but don't know which one is faster.

+1  A: 

It will depend on your system; there's no standard for which is faster. My guess would be they're usually both about the same speed. gettimeofday is more traditional and probably a good bet if you want your code to be portable to older systems. clock_gettime has more features.

R..
A: 

Have a look at this discussion. It seems of good quality and very closely related to what you might be looking for though a little dated.

vpit3833
A: 
int main()
{
    struct timespec tp;
    struct timeval tv;
    int i=0;
    int j=0;
    for(i=0; i < 500000; i++)
    {
        gettimeofday(&tv, NULL);
        j+= tv.tv_usec%2;
        clock_gettime(CLOCK_HIGHRES, &tp);
        j+=tp.tv_sec%2;
    }
    return 0;

}



 %Time Seconds Cumsecs  #Calls   msec/call  Name
  68.3    0.28    0.28  500000      0.0006  __clock_gettime
  22.0    0.09    0.37  500000      0.0002  _gettimeofday
   7.3    0.03    0.40 1000009      0.0000  _mcount
   2.4    0.01    0.41       1     10.      main
   0.0    0.00    0.41       4      0.      atexit
   0.0    0.00    0.41       1      0.      _exithandle
   0.0    0.00    0.41       1      0.      _fpsetsticky
   0.0    0.00    0.41       1      0.      _profil
   0.0    0.00    0.41       1      0.      exit

This ran on Solaris 9 v440 box. Profile the code on your own box. This result is completely different from the result quoted in a link supplied earlier. In other words, if there is a difference it will be due to the implmenetation.

jim mcnamara
A: 

You don't care.

If you're calling either of them often enough that it matters, You're Doing It Wrong.

Profile code which is causing specific performance problems and check how much time it is spending in there. If it's too much, consider refactoring it to call the function less often.

MarkR