1. 程式人生 > >程式執行過程計時

程式執行過程計時

在分析一個程式演算法時間複雜度時,可以使用統計程式或程式片段的計算時間有助於理解程式性質。許多語言或系統都提供了內部計時功能。有關c語言的如下:

有關函式在time.h標頭檔案中,在程式頭部寫成:#include<time.h>

在程式裡計時,通常寫表示式:clock()/CLOCKS_PER_SEC,得到從程式開始到表示式求值時所經歷的秒數。

下面通過斐波那契數列來展示使用:

#include<stdio.h>
#include<time.h>

long long fib (int n){
	return n<=2?1:fib(n-1)+fib(n-2);
}

long long fib1(int n){
	long long f1=1,f2=1,f3;
	if(n<=2)
		return 1;
	f3=f2+f1;
	for(int i=3;i<n;i++)
	{
		f1=f2;
		f2=f3;
		f3=f1+f2;
	}
	return f3;
}

int main()
{
	double x;
	for(int n=45;n<=48;n++)
	{
		x=clock()/CLOCKS_PER_SEC;
		printf("fib(%d)=%I64d\t",n,fib(n));
		x=clock()/CLOCKS_PER_SEC-x;
		printf("Timing fib(%d):%f.\n",n,x);
		x=clock()/CLOCKS_PER_SEC;
		printf("fib1(%d)=%I64d\t",n,fib1(n));
		x=clock()/CLOCKS_PER_SEC-x;
		printf("Timing fib1(%d):%f.\n\n",n,x);
	}
	return 0;
}