一. gettimeofday()基本介紹
1.簡介:
在C語言中可以使用函數gettimeofday()函數來得到時間。
它的精度可以達到微妙
2.函數原型:
#include<sys/time.h>
int gettimeofday(struct timeval*tv,struct timezone *tz )
3.說明:
gettimeofday()會把目前的時間用tv 結構回傳,
當地時區的訊息則放到tz所指的結構中
4.資料結構:
1>timeval
struct timeval{ long tv_sec;/*秒*/ long tv_usec;/*微妙*/ };
2>timezone 結構定義為:
struct timezone{ int tz_minuteswest;/*和greenwich 時間差了多少分鐘*/ int tz_dsttime;/*type of DST correction*/ }
3>在gettimeofday()函數中tv或者tz都可以為空。如果為空則
就不回傳其對應的結構。
4>函數執行成功後返回0,失敗後回傳-1,錯誤代號存於errno中。
5.程式範例:
#include<stdio.h> #include<sys/time.h> #include<unistd.h> int main() { struct timeval tv; struct timezone tz; gettimeofday(&tv,&tz); printf("tv_sec:%d\n",tv.tv_sec); printf("tv_usec:%d\n",tv.tv_usec); printf("tz_minuteswest:%d\n",tz.tz_minuteswest); printf("tz_dsttime:%d\n",tz.tz_dsttime); }
說明:在使用gettimeofday()函數時,第二個參數一般都為空,因為
我們一般都只是為了取得當前時間,而不用取得timezone的數值
二.gettimeofday()函數的一個常用方法
在測試程式時,往往需要瞭解程式執行所需的時間,在Linux中可以使用
函數gettimeofday來得到時間.
1.程式範例:
測試呼叫delay()函數所需執行的時間(單位為微妙)
#include<stdio.h> #include<sys/time.h> #include<unistd.h> int delay(int time) { int i,j; for(i =0;i<time;i++) for(j=0;j<5000;j++) ; } int main() { struct timeval start; struct timeval end; unsigned long diff; gettimeofday(&start,NULL); delay(10); gettimeofday(&end,NULL); diff = 1000000 * (end.tv_sec-start.tv_sec)+ end.tv_usec-start.tv_usec; printf("thedifference is %ld\n",diff); return 0; }
文章標籤
全站熱搜
留言列表