时间计算

1、 gettimeofday 函数计时 

       gettimeofday 是一个库函数,包含在 time.h 中。它的功能是查询系统时钟,以确定当前的日期和时间。相对于间隔计数的小适用范围和周期计数的麻烦性, gettimeofday 是一个可移植性更好相对较准确的方法。它的原型如下:

       struct timeval

       {

              long tv_sec;  // 秒 域

              long tv_usec;       // 微妙域

}

int gettimeofday( struct timeval *tv, NULL);

       这个机制呢,具体的实现方式在不同系统上是不一样的,而且具体的精确程度是和系统相关的:比如在 Linux 下,是用周期计数来实现这个函数的,所以和周期计数的精确度差不多,但是在Windows NT 下,是使用间隔计数实现的,精确度就很低了。

       具体使用,就是在要计算运行时间的程序段之前和之后分别加上 gettimeofday( &tvstart, NULL) 、 gettimeofday( &tvend, NULL) ,然后计算:

(tvend.tv_sec-tvstart.tv_sec)+(tvend.tv_usec-tvstart.tv_usec)/1000000

就得到了以秒为单位的计时时间。

2、clock 函数

       clock 也是一个库函数,仍然包含在 time.h 中,函数原型是:

       clock_t clock( void );

功能:返回自程序开始运行的处理器时间,如果无可用信息,返回 -1 。转换返回值若以秒计需除以 CLOCKS_PER_SECOND 。(注:如果编译器是 POSIX 兼 容的, CLOCKS_PER_SECOND 定义为 1000000 。) 

       使用 clock 函数也比较简单:在要计 时程序段前后分别调用 clock 函数,用后一次的返回值减去前一次的返回值就得到运行的处理器时间,然后再转换为秒。举例如下:

       clock_t starttime, endtime;

       double totaltime;

       starttime = clock();

       …

       endtime = clock();

       totaltime = (double)( (endtime - starttime)/(double)CLOCKS_PER_SEC );

3、 time 函数

       在 time.h 中还包含另一个时间函 数: time 。文献 [6] 对其进行了详细的介绍。通 过 time() 函数来获得日历时间( Calendar Time ),其原型为: time_t time( time_t * timer ) 。通过difftime 函数可以计算前后 两次的时间差: double difftime( time_t time1, time_t time0 ) 。用 time_t 表示的时间(日历时 间)是从一个时间点(例如: 1970 年 1 月 1 日 0 时 0 分 0 秒)到此时的秒数,则此函数的前后两次时间差也是以秒为单位。

       比如:

       time_t startT, endT;

       double totalT;

       startT = time( NULL );

       …

       endT = time( NULL );

       totalT = difftime( startT, endT);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值