Linux獲取毫秒級時間


在軟件設計中經常會用到關於時間的處理,用來計算語句、函數的執行時間,這時就需要精確到毫秒甚至是微妙的時間。

 

int gettimeofday(struct timeval *tv, struct timezone *tz);

int settimeofday(const struct timeval *tv , const struct timezone *tz);

 

struct timeval {

    time_t      tv_sec;     /* seconds */

    suseconds_t tv_usec;    /* microseconds */

};

 

struct timezone {

    int tz_minuteswest;     /* minutes west of Greenwich */

    int tz_dsttime;         /* type of DST correction */

};

 

下面是個簡單的例子,用來統計程序的執行時間:

       …

struct timeval t_start,t_end;

    long cost_time = 0;

 

//get start time

gettimeofday(&t_start, NULL);

printf("Start time: %ld us", t_start.tv_usec);

 

//some operation

 

//get end time

gettimeofday(&t_end, NULL);

printf("End time: %ld us", t_end.tv_usec);

 

//calculate time slot

cost_time = t_end.tv_usec - t_start.tv_usec;

printf("Cost time: %ld us", cost_time);

 

輸出:

Start time: 438061 us

End time: 459867 us

Cost time: 21806 us

 

demo:

#include <stdio.h>
#include <stdlib.h>
#include <sys/time.h>
int main(int argc, char *argv[])
{
printf("Hello, world!\n");
struct timeval tvafter,tvpre;
struct timezone tz;
int sum = 0;      
int i=0;
gettimeofday (&tvpre , &tz);

for(i = 0; i < 100000000; i++)
{
     sum += i;
}      
gettimeofday (&tvafter , &tz);
printf("sum=%d 花費時間:%d\n",sum, (tvafter.tv_sec-tvpre.tv_sec)*1000+(tvafter.tv_usec-tvpre.tv_usec)/1000);
return EXIT_SUCCESS;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM