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; }總結
以上是生活随笔為你收集整理的Linux获取毫秒级时间的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 妈妈我很好
- 下一篇: C# 设置Menustrip提示框的显示