clock()/CLOCKS_PER_SEC函数计算程序运行时间
clock()函数计算程序运行时间,那么为什么要除以CLOCKS_PER_SEC呢?
答案1.这是因为clock()是以毫秒为单位,要正确输出时间差需要把它换成秒,因此需要除以CLOCKS_PER_SEC。 clock()函数计算出来的是硬件滴答的数目,不是毫秒。在TC2.0中硬件每18.2个滴答是一秒,在VC++6.0中硬件每1000个滴答是一秒。
答案2.
clock函数返回进程运行时间,但是这个运行时间单位不是秒,而是CPU运行的时钟周期计数。
所以要得到消耗的时间(秒),需要除以CPU时钟频率,也就是CLOCKS_PER_SEC.以得到一个以秒为单位的数值。
clock函数返回进程运行时间,但是这个运行时间单位不是秒,而是CPU运行的时钟周期计数。
所以要得到消耗的时间(秒),需要除以CPU时钟频率,也就是CLOCKS_PER_SEC.以得到一个以秒为单位的数值。
至于CLOCKS_PER_SEC是什么?
答案:
一秒钟有几个嘀嗒的意思。它是宏定义常量。
调用 time.h 里的clock() 返回的数就是从程序开始运行起 总计的 嘀嗒嘀嗒嘀嗒 的个数。除以CLOCKS_PER_SEC,就得到时间 秒数。
一秒钟有几个嘀嗒的意思。它是宏定义常量。
调用 time.h 里的clock() 返回的数就是从程序开始运行起 总计的 嘀嗒嘀嗒嘀嗒 的个数。除以CLOCKS_PER_SEC,就得到时间 秒数。
例子:
1 2 3 4 5 6 7 8 9 |
#include <stdio.h> #include <time.h> int main() { int i; for(i=0;i<960000000;i++); printf("%.2lf\n",(double)clock()/CLOCKS_PER_SEC); return 0; } |
运行结果:
1 2 3 4 |
F:\work>29 3.19 F:\work> |
计算代码或函数运行时间:
1 2 3 4 5 6 7 |
double _beg = clock(); ... double _ed = clock(); _ed - _beg; // 1234 (_ed - _beg) / CLOCKS_PER_SEC; // 1.234s |
One Reply to “clock()/CLOCKS_PER_SEC函数计算程序运行时间”
看到代码,就有一个淡淡的忧伤~