词条 | CLK_TCK |
释义 | TC2.0中头文件time.h下宏定义的符号常量。在VC++6.0中也有关于CLK_TCK的宏定义。不过在两个版本中CLK_TCK的值是不同的。 TC2.0中time.h中的CLK_TCK如下: #ifndef __CLOCK_T #define __CLOCK_T typedef long clock_t; #define CLK_TCK 18.2 #endif 可见其值为18.2。 实际上在VC6.0中也有关于CLK_TCK的说明: #if !__STDC__ || defined(_POSIX_) #define CLK_TCK CLOCKS_PER_SEC _CRTIMP extern int daylight; _CRTIMP extern long timezone; _CRTIMP extern char * tzname[2]; _CRTIMP void __cdecl tzset(void); #endif 在VC++6.0中类似的有CLOCKS_PER_SEC 。其值为1000。 #define CLOCKS_PER_SEC 1000 因此VC6.0中CLK_TCK的值不再是18.2,而是1000。 程序举例: #include <stdio.h> #include <stdlib.h> #include <time.h> int main( void ) { long i=10000000L; clock_t start, finish; double duration; /* 测量一个事件持续的时间*/ printf( "Time to do %ld empty loops is ", i ); start = clock(); while( i-- ) ; finish = clock(); duration = (double)(finish - start) / CLOCKS_PER_SEC; printf( "%f seconds\\\", duration ); system("pause"); return 0; } 这是一个求时间差的程序,那么为什么要除以CLK_TCK呢? 这是因为clock()是以毫秒为单位,要正确输出时间差需要把它换成秒,因此需要除以CLK_TCK。 clock()函数计算出来的是硬件滴答的数目,不是毫秒。在TC2.0中硬件每18.2个滴答是一秒,在VC++6.0中硬件每1000个滴答是一秒。 |
随便看 |
|
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。