时间函数clock()
clock()是C/C++中的计时函数,该函数返回值是硬件滴答数,要换算成秒或者毫秒,需要除以CLK_TCK或者 CLOCKS_PER_SEC。
而与其相关的数据类型是clock_t,clock_t其实就是long,即长整形。
其中clock_t是用来保存时间的数据类型,typedef long clock_t
clock_t是一个长整形数。在time.h文件中,还定义了一个常量CLOCKS_PER_SEC,它用来表示一秒钟会有多少个时钟计时单元,其定义如下:
#define CLOCKS_PER_SEC ((clock_t)1000)
在MSDN中,查得对clock函数定义如下:
clock_t clock(void) ;
这个函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick滴答)数,在MSDN中称之为挂钟时间(wal-clock);若挂钟时间不可取,则返回-1。
程序用例:
#include <stdio.h> #include <time.h> #include<stdlib.h> #include<windows.h> #include <math.h> //void sleep( clock_t wait ); void main( void ) { long i = 600000L; clock_t start, finish; double duration; double a; /* 等三秒 */ printf( "Delay for 3 seconds\n" ); // sleep( (clock_t)3 * CLOCKS_PER_SEC );//强制类型转换 _sleep(3000);//这种方式也可以,所属库: stdlib.h 函数功能: 实现延时,单位为毫秒。 //1000毫秒是1秒。 在VS2005中如果使用该函数会有提示: //这个函数将在未来的库中舍弃,请用Sleep函数来代替。 //Sleep(3000); printf( "Done!\n" ); /* Measure the duration of an event. */ printf( "Time to do %ld loops is ", i ); start = clock(); while( i-- ) { a = sqrt(sqrt(16.0)); a = sqrt(sqrt(16.0)); } finish = clock(); duration = (double)(finish - start) / CLOCKS_PER_SEC; printf( "%lf seconds\n", duration ); } /* 等待多少毫秒的子程序 void sleep( clock_t wait ) { clock_t goal; goal = wait + clock(); while( goal > clock() ) ; }*/