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)未完待续