当前位置:C++技术网 > 资讯 > 时间数据类型:6 处理器运行时间周期类型clock_t以及函数clock说明

时间数据类型:6 处理器运行时间周期类型clock_t以及函数clock说明

更新时间:2015-06-26 18:34:20浏览次数:1+次

    处理器运行时间周期类型clock_t在头文件time.h中定义,定义如下:
#ifndef _CLOCK_T_DEFINED
typedef long clock_t;
#define _CLOCK_T_DEFINED
#endif

    此数据类型定义比较简单,就是一个typedef类型重定义而已。clock_t定义为long类型,而不是64位类型,是与使用的环境有关的。此数据类型是用来记录处理器即CPU运行的时间周期数。获取处理器运行的时间周期数的函数是clock。
clock函数的声明如下:

clock_t clock( void );
    函数没有任何参数,只有一个返回值。返回值就是clock_t 类型。返回的时间值是:开启这个程序进程”到“程序中调用clock()函数”时之间的时间,以时钟周期个数为单位,即clock_t的取值类型。宏CLOCKS_PER_SEC是一个常量,表示一秒钟有多少个时钟周期。如果时间周期数无法确定,函数内部会返回-1,然后转换成clock_t的类型返回给调用者。使用clock计时只能得到时钟周期数,要转换成秒数,可以使用时钟周期数除以CLOCKS_PER_SEC来得到,结果非常接近。
clock函数使用示例:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void sleep( clock_t wait );
void main( void )
{
    long    i = 600000L;
    clock_t start, finish;
    double  duration;
    / * -  延迟指定的时间 - * /
    printf( "延迟三秒\n" );
    sleep( (clock_t)3 * CLOCKS_PER_SEC );
    printf( "完成!\n" );
    / * -  测量时间 - * /
    printf( "空循环个数:%ld ", i );
    start = clock();
    while( i-- ) ;
    finish = clock();
    duration = (double)(finish - start) / CLOCKS_PER_SEC;
    printf( "耗时:%2.1f 秒\n", duration );
}
/ * -  睡眠指定的时间,以毫秒为单位 - * /
void sleep( clock_t wait )
{
    clock_t goal;
    goal = wait + clock();
    while( goal > clock() );
}