Linux下gettimeofday函数
函数头文件及原型为:
#include<sys/time.h>
int gettimeofday(struct timeval*tv,struct timezone *tz )
参数:
struct timeval{
long tv_sec;/*秒*/
long tv_usec;/*微妙*/
};
struct timezone{
int tz_minuteswest;/*和greenwich时间差*/
int tz_dsttime;
}
习惯用法:
struct timeval start;
gettimeofday(&start,NULL);
printf("time is %ld ms\n", start.tv_sec*1000 + start.tv_usec/1000);
后面可以再声明一个类似的end参数,通过end与start相减,可以获得两次调用gettimeofday函数之间代码执行的时间。
注意点
以上代码在64位linux下执行正常,在32位linux嵌入式设备上执行结果有问题,可能是32位与64位系统中,long类型能够保存的数据长度不同导致。
32位系统中long占4个字节,64位系统中long占8个字节。
若想在32位linux嵌入式设备上正常获取毫秒级时间戳,需要加上强制类型转换,如下所示:
struct timeval start;
gettimeofday(&start,NULL);
printf("time is %lld ms\n", (long long)(start.tv_sec)*1000 + (long long)(start.tv_usec)/1000);
转自:
https://blog.csdn.net/qq_33417509/article/details/106622832