比如这样的程序
start=clock();
...
end=clock();
cost=end-start;
最后的结果cost是一个很大的值(150000ms)但是程序运行的时间远不到150s
clock()测的不是运行的时间吗
clock函数返回的是cpu时间,并不是秒数,真正的一秒钟可能包含若干个CPU时间,这个值通常是由宏CLOCKS_PER_SEC来定义,表示一秒中有CLOCKS_PER_SEC这么多个cpu时间,不同的编译器可能不同,比如,linux C中,它是1000000,在VC6中,它是1000,你用cost除以CLOCKS_PER_SEC即可得到实际的秒数。
附linux下clock函数说明:
在单独的窗口中打开图片可以看得更清楚一些,注意红线部分说明:要计算秒数,除以CLOCKS_PER_SEC
clock函数测出来的时间为进程运行时间,单位为滴答数(ticks)。
一、clock函数声明在time.h中,声明形式为:
clock_t clock(void) ;
其中clock_t为标准库中的自定义类型,一般为long型。
typedef long clock_t;
二、函数功能为返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)数。
三、返回的tick数,要转换为常用的时间单位,可以除以CLOCKS_PER_SEC,这个是一个宏,同样定义在time.h中。
以下代码可以打印程序运行的时间:
#include <stdio.h>