Unix/Linux計算プログラムが消費する時間(ミリ秒)


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
", 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
", tvDiff.tv_sec, tvDiff.tv_usec);
return 0; }