#include <stdio.h>
#include <time.h>
#include <math.h>
#define MAXN 10
#define MAXK 1e7
clock_t start, stop;
double duration;
double poly_1(int n, double a[], double x)
{
double sum = a[0];
int i;
for(i = 1; i <= n; i++)
sum += a[i] * pow(x, i);
return sum;
}
double poly_2(int n, double a[], double x)
{
double p = a[n];
int i;
for(i = n; i > 0; i--)
p = a[i-1] + x * p;
return p;
}
//运算计时函数
void run(double(*f)(int, double *, double), double a[], int case_n)
{
int i;
start = clock();
for(i = 0; i < MAXK; i++)
(*f)(MAXN - 1, a, 1.1);
stop = clock();
duration = ((double)(stop - start)) / CLK_TCK/MAXK;
printf("ticks%d = %f\n", case_n, (double)(stop - start));
printf("duration%d = %6.2e\n", case_n, duration);
}
int main()
{
int i;
double a[MAXN];
for(i=0; i < MAXN; i++)
a[i] = (double)i;
run(poly_1, a, 1);
run(poly_2, a, 2);
return 0;
}
01-16
2169
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
07-31
1069
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
08-03
582
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)