#include<stdio.h> #include<time.h> #include<math.h> clock_t start ,stop; double duration; #define MAXN 10 #define MAXK 1e7 double f1(int n ,double a[],double x); double f2(int n ,double a[],double x); int main() { int i; double a[MAXN]; for( i = 0; i<MAXN ; i++) a[i] = (double)i; start = clock(); for( i = 0; i<MAXK; i++){ f1(MAXN-1 , a,1.1); } stop = clock(); duration = ((double)(stop - start))/CLK_TCK/MAXK; printf("ticks1 = %f\n", (double)(stop-start)); printf("duration1 = %6.2e\n",duration); start = clock(); for( i = 0; i<MAXK ; i++){ f2(MAXN-1 , a,1.1); } stop = clock(); duration = ((double)(stop - start))/CLK_TCK/MAXK; printf("ticks2 = %f\n", (double)(stop-start)); printf("duration2 = %6.2e\n",duration); } double f1(int n , double a[] , double x) { int i; double p =a[0]; for( i=1 ; i<= n; i++) p +=(a[i]*pow(x,i)); return p; } double f2(int n , double a[] , double x) { int i; double p = a[n]; for( i = n ; i > 0 ; i--) p = a[i-1] + x*p; return p; }
原文地址:http://9815936.blog.51cto.com/9805936/1637241