Chinaunix首页 | 论坛 | 博客
  • 博客访问: 65328
  • 博文数量: 24
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 215
  • 用 户 组: 普通用户
  • 注册时间: 2015-02-10 09:58
个人简介

专业提供linux应用软件开发、oracle数据库底层开发,服务器开发及相关技术支持服务

文章分类

全部博文(24)

文章存档

2015年(24)

我的朋友

分类: LINUX

2015-02-12 11:14:40

项目开发中在提高程序效率时,首先要定位到代码那个部分耗费时间较长,进而改进代码--缩短执行时间。这就要一个时间获取函数来准确获取时间,在linux/unix系统都有对应的时间获取函数,不过要对其转换封装才可以得到我们想要且看得懂的数值,下例是以封装gettimeofday()函数和struct timeval结构体获取的时间获取函数。

#include >
 #include  

定义函数: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’

点击(此处)折叠或打开

  1. //返回值是微妙单位
  2. UB8 ldw_time()
  3. {
  4.     UB8 tm;
  5.     struct timeval tv;
  6.     gettimeofday(&tv, NULL);
  7.     tm = tv.tv_sec * 1000000 + tv.tv_usec;
  8.     return tm;
  9. }

也可以将封装好的时间获取函数用宏定义,宏定义是在预处理时处理的,在代码执行上效率很高

点击(此处)折叠或打开

  1. #define START_TIME(_ST) _ST = ldw_time();
  2. #definie END_TIME(_ET) _ET = ldw_time();
  3. #defime WASTE_TIME(_ST,_ET) (_ET-_ST)

  4. int main(int argc,char *argv[])
  5. {
  6.      long t1= 0;
  7.      long t2 = 0;
  8.      char buf[1*1024*1024];
  9.      t1 = ldw_time();
  10.       //START_TIME(t1);
  11.      memset(buf,0,sizeof(buf));
  12.      t2 = ldw_time();
  13.      //END_TIME(t2);
  14.      printf("memset time:%ul\n",t2-t1);
  15.     // printf("memset time:%ul\n",WASTE_TIME(t1,t2));
  16.      return 0;
  17. }




本文地址:
内容来源:ITPUX技术网(),中国最专业最全面的IT行业技术资讯网站。
阅读(606) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~