码迷,mamicode.com
首页 > 其他好文 > 详细

精确获取函数运行时间,精确到微秒

时间:2016-09-20 13:33:25      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:

Linux或者VxWorks下面精确获取函数运行的时间:

uint64 start_time;    /* 起始时间 */

uint64 end_time;    /* 结束时间 */ 

struct timespec ltv;
(void)clock_gettime(CLOCK_REALTIME, &ltv);
start_time = (uint64)ltv.tv_sec * 1000 * 1000 + (uint64)ltv.tv_nsec / 1000; /* (us) */

/* 待测函数 */

(void)clock_gettime(CLOCK_REALTIME, &ltv);
end_time = (uint64)ltv.tv_sec * 1000 * 1000 + (uint64)ltv.tv_nsec / 1000; /* (us) */

 

总结:

Linux系统中获取时间,精确到秒级以下的有两个,一个是timespec,一个是timeval。两者的具体定义和差别可以参考如下。

 

 

一,struct timespec

系统中该结构体定义如下,

typedef long time_t;

#ifndef _TIMESPEC

#define _TIMESPEC

struct timespec{

    time_t tv_sec;    /* seconds 秒 */

    long tv_nsec;    /* nanoseconds 纳秒 */

};

#endif

struct timespec有两个成员,一个是秒,一个是纳秒,所以最高精确度是纳秒。

一般由函数int clock_gettime(clockid_t, struct timespec *)获取特定时钟的时间,常用如下4种时钟:

CLOCK_REALTIME             系统当前时间,从1970年1.1日算起

CLOCK_MONOTONIC            系统的启动时间,不能被设置

CLOCK_PROCESS_CPUTIME_ID   本进程运行时间

CLOCK_THREAD_CPUTIME_ID    本线程运行时间

 

二,struct timeval

struct timeval{

time_t tv_sec;    /* seconds 秒 */

long tv_usec;    /* microseconds 微秒 */

};

struct timezone{

int tz_minuteswest;   /* minutes west of Greenwich */

int tz_dsttime;       /* type of DST correction */

};

struct timeval 有两个成员,一个是秒,一个是微秒,所以最高精确度是微秒。

一般由函数int gettimeofday(struct timeval *tv, struct timezone *tz)获取系统时间。

精确获取函数运行时间,精确到微秒

标签:

原文地址:http://www.cnblogs.com/houpeiyong/p/5888387.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!