1. 程式人生 > >linux c性能測試的時間間隔獲取方法

linux c性能測試的時間間隔獲取方法

時間間隔 lock 測試的 double urn 需要 方法 ++ timezone

一、clock_t clock(void)函數

  說明:clock_t其實就是long,即長整形。該函數返回值是硬件滴答數,要換算成毫秒或者秒。換算為毫秒需要除以1000,若換算為秒則除以CLOCKS_PER_SEC。在linux上,如果使用sleep函數,是不會計算在內的。如果處理器時間使用的是不可用的,或者它的值不能被表示,函數返回值為(clock_t)-1。具體查看以下例子(GCC編譯):

 1 int main(int argc, char *arg[])
 2 {
 3         printf("CLOCKS_PER_SEC = %lf\n", (double)(CLOCKS_PER_SEC));
4 clock_t time = clock(); 5 sleep(5); 6 int i; 7 for(i = 0; i < 1000000000; i++){} 8 clock_t second_time = clock(); 9 printf("ms:%lf\n", (double)((second_time-time) / 1000)); 10 printf("s:%lf\n", (double)((second_time-time) / CLOCKS_PER_SEC)); 11 12 return
0; 13 14 }

二、time_t time(time_t *t)函數

說明:返回從1970年1月1日00:00:00開始到現在的秒數,如果t不為空,則將結果也保存在t指向的內存中。具體查看以下例子(GCC編譯):

 1 int main(int argc, char *arg[])
 2 {
 3         int i;
 4         time_t first_time = time(NULL);
 5         for(i = 0; i < 1000000000; i++){}
 6         time_t second_time = time(NULL);
 7         printf("
s:%lf\n", (double)(second_time-first_time)); 8 9 return 0; 10 11 }

三、int gettimeofday(struct timeval *tv, struct timezone *tz) 函數

  說明: struct timeval{

        long tv_sec;   //秒

        long tv_usec;   //微秒

      };

  將目前的時間保存在tv指向的內存中,tz結構體設置為NULL即可。具體查看以下例子(GCC編譯):

 1 int main(int argc, char *arg[])
 2 {
 3         struct timeval first_time, second_time;
 4         gettimeofday(&first_time, NULL);
 5         sleep(2);
 6         gettimeofday(&second_time, NULL);
 7         double time_val = (second_time.tv_sec - first_time.tv_sec) * 1000000 + second_time.tv_usec - first_time.tv_usec;
 8         printf("time_val(ms) = %lf\n", time_val / 1000.0);
 9 
10         return 0;
11 
12 }

linux c性能測試的時間間隔獲取方法