c - Getting Negative Values Using clock_gettime -


in following program, have tried measure execution time of job(for loop). of time works fine, however, sometimes, returns negative values!! first guess variable may overflowed. can please let me whether right or not? how can solve problem?

thanks

int main(int argc, char **argv)  { long int st; long int et; struct timespec gettime_now; clock_gettime(clock_realtime, &gettime_now); st= gettime_now.tv_nsec; (i=0; < 1000; i++)   a[i]=b[i]; clock_gettime(clock_realtime, &gettime_now); et= gettime_now.tv_nsec; printf("time diff: %ld\n", et-st); } 

you neglecting tv_sec of struct timespec in both cases , using nano-second not correct st , ev's tv_nsec may of different second's.

from man,

tv_sec - represents seconds since epoch

tv_nsec - current second in nano-second precision (1/1000000000 sec)

it better write own function find difference. sample code (not tested),

timespec diff(timespec start, timespec end) {     timespec temp;      if ((end.tv_nsec-start.tv_nsec)<0     {             temp.tv_sec = end.tv_sec-start.tv_sec-1;             temp.tv_nsec = 1000000000+end.tv_nsec-start.tv_nsec;     }     else      {             temp.tv_sec = end.tv_sec-start.tv_sec;             temp.tv_nsec = end.tv_nsec-start.tv_nsec;     }     return temp; } 

refer this actual diff function , example.


Comments

Popular posts from this blog

How to mention the localhost in android -

php - Calling a template part from a post -

c# - String.format() DateTime With Arabic culture -