Скачиваний:
12
Добавлен:
01.05.2014
Размер:
134.66 Кб
Скачать

2.2.1.2 Профилирование программы linefit1.CPp(измерение времен выполнения функциональных участков)

Исходный текст программы:

#include <stdlib.h>

#include <stdio.h>

#include "sampler.h"

#define size 20

void linfit1(double x[size],double y[size], double* y_calc, double* a, double* b,int n)

{

int i;

double sum_x,sum_y,sum_xy,sum_x2,sum_y2,xi,yi,sxy,sxx,syy;

sum_x = 0;

sum_y = 0;

sum_xy = 0;

sum_x2 = 0;

sum_y2 = 0;

for (i=0; i<n; i++)

{

xi=x[i];

yi=y[i];

sum_x += xi;

sum_y += yi;

sum_xy += xi*yi;

sum_x2 += xi*xi;

sum_y2 += yi*yi;

}

sxx = sum_x2-sum_x*sum_x/n;

sxy = sum_xy-sum_x*sum_y/n;

syy = sum_y2-sum_y*sum_y/n;

*b=sxy/sxx;

*a=((sum_x2*sum_y-sum_x*sum_xy)/n)/sxx;

for (i=0;i<n;i++)

*(y_calc+i) = *a + *b * x[i];

}

void main(void)

{

int i,k;

double a,b,x[size],y[size],y_calc[size];

for (k=0;k<80;k++)

{

SAMPLE;//39

randomize();

SAMPLE;//41

printf("Input Data: \n");

SAMPLE;//43

for (i=0;i<size;i++)

{

x[i] = 10+i*10;

y[i] = 10+i*10 + random(20) - 10;

printf("x[%d] = %3.1f y[%d] = %3.1f\n",i,x[i],i,y[i]);

}

SAMPLE;//50

linfit1(x,y,&y_calc[0],&a,&b,size);

SAMPLE;//52

printf("a: %3.1f, b: %3.1f\n",a,b);

SAMPLE;//54

for (i=0;i<size;i++)

printf("y_calc = %3.1f\n",y_calc[i]);

SAMPLE;//57

}

}

Результаты профилирования:

Отчет о результатах измерений для программы MY_NAR.EXE.

Создан программой Sampler ( версия от Feb 15 1999 )

1995-98 (c) СПбГЭТУ, Мойсейчук Леонид.

Список обработанных файлов.

----------------------------------------------------------------------

NN Имя обработанного файла

----------------------------------------------------------------------

1. MY_NAR.CPP

----------------------------------------------------------------------

Таблица с результатами измерений ( используется 7 из 416 записей )

----------------------------------------------------------------------

Исх.Поз. Прием.Поз. Общее время(мкс) Кол-во прох. Среднее время(мкс)

----------------------------------------------------------------------

1 : 39 1 : 41 510.40 80 6.38

----------------------------------------------------------------------

1 : 41 1 : 43 667.96 80 8.35

----------------------------------------------------------------------

1 : 43 1 : 50 163275.45 80 2040.94

----------------------------------------------------------------------

1 : 50 1 : 52 126.55 80 1.58

----------------------------------------------------------------------

1 : 52 1 : 54 792.00 80 9.90

----------------------------------------------------------------------

1 : 54 1 : 57 76029.60 80 950.37

----------------------------------------------------------------------

1 : 57 1 : 39 66.21 79 0.84

----------------------------------------------------------------------

Способы оптимизации: Наиболее ресурсоемкая операция это вывод на экран значений. Попробуем уменьшить количество выводимых символов на экран, и выполним макроподстановку тела функции в код основной программы.

Соседние файлы в папке Лаб3