您的位置:首页 > 运维架构 > Linux

关于Linux下获取系统时间问题

2016-04-10 11:43 579 查看
1、应用原由

最近在做视频图像编解码的一些工作,经常会碰到测量某一个模块大体工作时间的问题。为了降低整个程序的时间消耗,增强系统实时性,掌握个模块的大体时间利用情况是非常有必要的,对于我们这边强调的极限延时时间,也是大有裨益的。

2、常用方式

(1)gettimeofday(获取当前时间)

头文件:#include <sys/time.h>

函数定义:int gettimeofday(struct timeval *tv, struct timezone *tz)

函数说明:

当gettimeofday( )被调用后,当前系统时间讲通过tv所指的timeval结构体返回,而时区信息则通过tz所指的timezone结构提返回。对于日常工作而言获取时区信息意义不大,故tz指针通常设置为NULL。

timeval结构定义:

struct timeval{

long tv_sec;               // 秒(s)

long tv_usec;             // 微秒(us)



返回值:成功返回0,失败返回-1,错误代码存于errno中。

Demo:

#include <stdio.h>

#include <sys/time.h>

#include <time.h>

int main(int argc, char *argv[ ])

{

double useTime;  //ms

struct timeval startTime,finishTime;

while(1){

gettimeofday(&startTime, NULL);

usleep(500*1000);

gettimeofday(&finishTime, NULL);

useTime = 1000*(finishTime.tv_sec - startTime.tv.sec) + (finishTime.tv_usec - startTime.tv_usec)*0.001;

printf("useTime = %f ms \n",useTime);

}

return 0;

}

运行结果:useTime = 500.777000 ms

                            useTime = 502.640000 ms

                            useTime = 500.590000 ms

                            useTime = ...

(2)未完待续
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: