如何获取linux运行时间函数,linux下的时间相关函数以及如何统计程序运行时间...

Linux下时间有关的结构体:

1、timeval

timeval结构的用于指定时间值。

头文件:

struct timeval

{

time_t tv_sec; //秒 [long int]

suseconds_t tv_usec; //微秒 [long int]

};

2、timezone

struct timezone

{

int tv_minuteswest;

int tv_dsttime;

};

tv_minuteswest是格林威治时间往西方的时差,tv_dsttime则是时间的修正方式。

3、timespec

struct timespec

{

long int tv_sec;

long int tv_nsec;

};

tv_nsec是nano second(10E-9 second)。

4、tm

struct tm {

int tm_sec; /* 秒–取值区间为[0,59] */

int tm_min; /* 分 - 取值区间为[0,59] */

int tm_hour; /* 时 - 取值区间为[0,23] */

int tm_mday; /* 一个月中的日期 - 取值区间为[1,31] */

int tm_mon; /* 月份(从一月开始,0代表一月) - 取值区间为[0,11] */

int tm_year; /* 年份,其值从1900开始 */

int tm_wday; /* 星期–取值区间为[0,6],其中0代表星期天,1代表星期一,以此类推 */

int tm_yday; /* 从每年的1月1日开始的天数–取值区间为[0,365],其中0代表1月1日,1代表1月2日,以此类推 */

int tm_isdst; /* 夏令时标识符,实行夏令时的时候,tm_isdst为正。不实行夏令时的进候,tm_isdst为0;不了解情况时,tm_isdst()为负。*/

long int tm_gmtoff; /*指定了日期变更线东面时区中UTC东部时区正秒数或UTC西部时区的负秒数*/

const char *tm_zone; /*当前时区的名字(与环境变量TZ有关)*/

};

获取当前时间的方法:

1、time()

time_t time(time_t *t);

这个函数会传回从epoch开始计算起的秒数,如果t是non-null,它将会把时间值填入t中。

2、gettimeofday()

对某些需要较高精准度的需求,Linux提供了gettimeofday()

int gettimeofday(struct timeval * tv,struct timezone *tz); int settimeofday(const struct timeval * tv,const struct timezone *tz);

3、struct tm格式时间函数

struct tm * gmtime(const time_t * t);转换成格林威治时间。有时称为GMT或UTC。 struct tm * localtime(const time_t *t);  转换成本地时间。它可以透过修改TZ环境变数来在一台机器中,不同使用者表示不同时间。

time_t mktime(struct tm *tp);转换tm成为time_t格式,使用本地时间。

tme_t timegm(strut tm *tp);转换tm成为time_t格式,使用UTC时间。

double difftime(time_t t2,time_t t1);计算秒差。

文字格式时间:

1、char * asctime(struct tm *tp);  char * ctime(struct tm *tp);这两个函数都转换时间格式为标准UNIX时间格式。  Mon May 3 08:23:35 1999

ctime一率使用当地时间,asctime则用tm结构内的timezone资讯来表示。

2、size_t strftime(char *str,size_t max,char *fmt,struct tm *tp);

strftime有点像sprintf,其格式由fmt来指定。

下面举一个小例子,说明如何获得系统当前时间:

time_t now;

struct tm *timenow;

char strtemp[255];

time(&now);

timenow = localtime(&now);

printf("recent time is : %s \n", asctime(timenow))

统计程序运行时间(us级别):

struct timeval starttime, endtime;

//get start time

gettimeofday(&starttime, NULL);

//operation

...

//get end time

gettimeofday(&endtime, NULL);

//calculate consume us

long cost_time = 1000000*(endtime.tv_sec - starttime.tv_sec) + endtime.tv_usec - starttime.tv_usec;

cout << cost_time << endl;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值