在编写程序时,有些时候对程序的运行时间有严格的要求。这就要求我们在测试程序时进行运行时间的测量。
下面给大家介绍两种时间测量方法。
1.使用clock函数
根据百度百科的解释,clock()是C/C++中的计时函数,而与其相关的数据类型是clock_t。在MSDN中,查得对clock函数定义如下:
clock_t clock(void) ;
简单而言,就是该程序从启动到函数调用占用CPU的时间。这个函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)数,在MSDN中称之为挂钟时间(wal-clock);若挂钟时间不可取,则返回-1。其中clock_t是用来保存时间的数据类型。
为了完成对事件的计时,需调用clock两次:一次在事件开始的时候,另一次在事件结束的时候。一个时间所需的总时间是其终止时间减去其开始时间。由于返回值为clock_t型数据,因而应把它转化成double型。
请看下例
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
long i;
clock_t start, finish;
start = clock();
for (i = 0; i < 10000000; i++);
finish = clock();
printf("%f\n", (double)(finish - start) / CLOCKS_PER_SEC);
system("pause");
return 0;
2.使用time函数
第二个方法是使用函数time。这个函数的返回结果是时间,以秒为单位,返回类型为time_t,因而也需要转换为double型输出。其计时开始点为start=time(NULL),结束点为stop=time(NULL)。结果duration=(double)difftime(stop,start)。
上面的程序用time函数计时,代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
long i;
time_t start, finish;
start = time(NULL);
for (i = 0; i < 10000000; i++);
finish =time(NULL);
printf("%f\n", (double)difftime(finish ,start));
system("pause");
return 0;
}
这样就可以使用系统内时间进行时间测量了。