选择gettimeofday()函数的原因:精度比timer()函数高很多,time函数只精确到秒,而gettimeofday精确到微妙,足以满足各种所需,虽然有精度比它更高的,但是它的系统调用开销相对更小
函数原型
#include<sys/time.h>
int gettimeofday(struct timeval* tv, struct timezone* tz);
成功返回0, 失败返回-1, 出错返回errno
参数意义
- tv是指向下面这个结构体的一个指针
struct timeval
{
time_t tv_sec;
suseconds_t tv_usec;
}
time_t 和suseconds_t 都是lont int 类型, tv_sec 表示Epoch 秒数, 而tv_usec 是额外的微妙精度
- tz 是一个历史产物, 早期的UNIX实现用来获取系统的时区信息, 目前已经被废弃了, 应始终将其置为NULL.
示例
#include <sys/time.h>
#include <iostream>
using namespace std;
int main()
{
struct timeval tv;
gettimeofday(&tv, nullptr);
cout << "seconds since 00:00:00, 1 Jan 1970 UTC: " << tv.tv_sec << endl;
cout << "Additional microsecondsss: " << tv.tv_usec << endl;
}
lzj@lzj-PC:~$ ./a.out
seconds since 00:00:00, 1 Jan 1970 UTC: 1533287671
Additional microsecondsss: 161258