Linux获取程序运行时间(微秒级精度)

在 <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

版权声明:本文为Fang_cheng_原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。