使用time(NULL)
得到的是從1970年1月1日到目前的秒,這種精度很多時候是不夠用的。為了得到毫秒級的精度,需要使用gettimeofday
:
直接上代碼:
#include <sys/time.h>#include <stdlib.h>#include <stdio.h>#include <math.h>// Return 1 if the difference is negative, otherwise 0. int timeval_subtract(struct timeval *result, struct timeval *t2, struct timeval *t1){ long int diff = (t2->tv_usec + 1000000 * t2->tv_sec) - (t1->tv_usec + 1000000 * t1->tv_sec); result->tv_sec = diff / 1000000; result->tv_usec = diff % 1000000; return (diff<0);}void timeval_print(struct timeval *tv){ char buffer[30]; time_t curtime; printf("%ld.%06ld", tv->tv_sec, tv->tv_usec); curtime = tv->tv_sec; strftime(buffer, 30, "%m-%d-%Y %T", localtime(&curtime;)); printf(" = %s.%06ld\n", buffer, tv->tv_usec);}int main(){ struct timeval tvBegin, tvEnd, tvDiff; // begin gettimeofday(&tvBegin;, NULL); timeval_print(&tvBegin;); // lengthy operation int i,j; for(i=0;i<999999L;++i) { j=sqrt(i); } //end gettimeofday(&tvEnd;, NULL); timeval_print(&tvEnd;); // diff timeval_subtract(&tvDiff;, &tvEnd;, &tvBegin;); printf("%ld.%06ld\n", tvDiff.tv_sec, tvDiff.tv_usec); return 0;}