在 <sys/time.h> 中定义了 gettimeofday()函数,用于获得当前精确时间(1970年1月1日到现在的时间)
//函数声明
int gettimeofday (struct timeval * tv, struct timezone * tz);
//参数1:保存获取时间结果的结构体
struct timeval {
time_t tv_sec; /* seconds */
suseconds_t tv_usec; /* microseconds */
};
//参数2:保存时区结果的结构体
struct timezone {
int tz_minuteswest; /* minutes west of Greenwich */
int tz_dsttime; /* type of DST correction */
};
使用例子
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <sys/time.h>
int main(){
struct timeval tv1, tv2;
gettimeofday(&tv1,NULL);//获取开始时间
//输出程序开始的时刻
cout << "second: " << tv1.tv_sec << endl; //秒
cout << "millisecond: " << tv1.tv_sec*1000 + tv1.tv_usec/1000 << endl; //毫秒
cout << "microsecond: " << tv1.tv_sec*1000000 + tv1.tv_usec << endl; //微秒
//.......
//程序运行
//......
gettimeofday(&tv2,NULL);//获取程序结束的时刻,两个时刻作差即可获得运行时间
cout << "second: " << tv2.tv_sec - tv1.tv_sec << endl; //秒
cout << "millisecond: " << tv2.tv_sec*1000 + tv2.tv_usec/1000 - (tv1.tv_sec*1000 + tv1.tv_usec/1000) << endl; //毫秒
cout << "microsecond: " << tv2.tv_sec*1000000 + tv2.tv_usec - (tv1.tv_sec*1000000 + tv1.tv_usec) << endl; //微秒
return 0;
}
结果演示
second: 1608131402
millisecond: 1608131402695
microsecond: 1608131402695630
second: 0
millisecond: 0
microsecond: 66