时间获取函数封装--linux/unix
2014-12-25 00:00
99 查看
项目开发中在提高程序效率时,首先要定位到代码那个部分耗费时间较长,进而改进代码--缩短执行时间。这就要一个时间获取函数来准确获取时间,在linux/unix系统都有对应的时间获取函数,不过要对其转换封装才可以得到我们想要且看得懂的数值,下例是以封装gettimeofday()函数和struct timeval结构体获取的时间获取函数。
#include <sys/time.h> #include <unistd.h>
定义函数:int gettimeofday (struct timeval * tv, struct timezone * tz);
函数说明:gettimeofday()会把目前的时间有tv 所指的结构返回,当地时区的信息则放到tz 所指的结构中。
timeval 结构定义为:
struct timeval{
long tv_sec; //秒
long tv_usec; //微秒
};
timezone 结构定义为:
struct timezone
{
int tz_minuteswest; //和Greenwich 时间差了多少分钟
int tz_dsttime; //日光节约时间的状态
};
很多时候不要第二个参数值,所以一般都设置为‘NULL’
//返回值是微妙单位
UB8 ldw_time()
{
UB8 tm;
struct timeval tv;
gettimeofday(&tv, NULL);
tm = tv.tv_sec * 1000000 + tv.tv_usec;
return tm;
}
也可以将封装好的时间获取函数用宏定义,宏定义是在预处理时处理的,在代码执行上效率很高
#define START_TIME(_ST) _ST = ldw_time();
#definie END_TIME(_ET) _ET = ldw_time();
#defime WASTE_TIME(_ST,_ET) (_ET-_ST)
int main(int argc,char *argv[])
{
long t1= 0;
long t2 = 0;
char buf[1*1024*1024];
t1 = ldw_time();
//START_TIME(t1);
memset(buf,0,sizeof(buf));
t2 = ldw_time();
//END_TIME(t2);
printf("memset time:%ul\n",t2-t1);
// printf("memset time:%ul\n",WASTE_TIME(t1,t2));
return 0;
}
#include <sys/time.h> #include <unistd.h>
定义函数:int gettimeofday (struct timeval * tv, struct timezone * tz);
函数说明:gettimeofday()会把目前的时间有tv 所指的结构返回,当地时区的信息则放到tz 所指的结构中。
timeval 结构定义为:
struct timeval{
long tv_sec; //秒
long tv_usec; //微秒
};
timezone 结构定义为:
struct timezone
{
int tz_minuteswest; //和Greenwich 时间差了多少分钟
int tz_dsttime; //日光节约时间的状态
};
很多时候不要第二个参数值,所以一般都设置为‘NULL’
//返回值是微妙单位
UB8 ldw_time()
{
UB8 tm;
struct timeval tv;
gettimeofday(&tv, NULL);
tm = tv.tv_sec * 1000000 + tv.tv_usec;
return tm;
}
也可以将封装好的时间获取函数用宏定义,宏定义是在预处理时处理的,在代码执行上效率很高
#define START_TIME(_ST) _ST = ldw_time();
#definie END_TIME(_ET) _ET = ldw_time();
#defime WASTE_TIME(_ST,_ET) (_ET-_ST)
int main(int argc,char *argv[])
{
long t1= 0;
long t2 = 0;
char buf[1*1024*1024];
t1 = ldw_time();
//START_TIME(t1);
memset(buf,0,sizeof(buf));
t2 = ldw_time();
//END_TIME(t2);
printf("memset time:%ul\n",t2-t1);
// printf("memset time:%ul\n",WASTE_TIME(t1,t2));
return 0;
}
相关文章推荐
- Unix/Linux环境C编程入门教程(22) C/C++如何获取程序的运行时间
- linux/unix 下精确获取系统时间
- solaris/unix/linux 获取系统时间的方法--精确到年月日时分秒
- Unix/Linux环境C编程入门教程(22) C/C++如何获取程序的运行时间
- Unix/Linux环境C编程新手教程(22) C/C++怎样获取程序的执行时间
- Linux获取时间日期方法
- 闰秒(leap second)和linux/unix时间
- 如何得到unix或linux的时间一点小的总结
- windows和linux下系统时间的获取
- linux内核不用系统调用获取时间的函数kernel_mktime
- 获取Linux/Unix文件系统信息
- 在C++中获取当前时间并转换为可读时间格式(Win32和Linux通用)
- Linux或Unix下怎样修改系统时间
- Linux 获取系统时间
- linux中时间精度的获取问题
- Linux获取毫秒级时间
- Linux或Unix下修改系统时间
- unix/linux获取信息函数--例子
- linux获取系统时间
- Linux获取当前时间