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

2.2.2.1 Профилирование программы linefit1.Pas(измерение времени полного выполнения программы)

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

uses sampler;

const

szUnit: String = 'MA_ALL.pas';

max = 20;

type ary = array[1..max] of real;

procedure linfit1(x,y: ary; var y_calc: ary; var a,b:real; n:integer);

{ fit a straight line (y_calc) through n sets of x and y pairs of points }

var i : integer;

sum_x,sum_y,sum_xy,sum_x2,

sum_y2,xi,yi,sxy,sxx,

syy: real;

begin { linfit }

sum_x:=0.0;

sum_y:=0.0;

sum_xy:=0.0;

sum_x2:=0.0;

sum_y2:=0.0;

for i:=1 to n do

begin

xi:=x[i];

yi:=y[i];

sum_x:=sum_x+xi;

sum_y:=sum_y+yi;

sum_xy:=sum_xy+xi*yi;

sum_x2:=sum_x2+xi*xi;

sum_y2:=sum_y2+yi*yi;

end;

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:=1 to n do

y_calc[i]:=a+b*x[i]

end; { LINFIT }

var x,y,y_calc:ary;

i,k:integer;

a,b:real;

begin

Sample ( szUnit,1 ) ;

{creating new mass x and y}

for k:=1 to 80 do

begin

randomize;

writeln('Input Data: ');

for i:=1 to max do

begin

x[i] := i*10;

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

writeln('x[',i:2,'] = ',x[i]:3:0,' y[',i:2,'] = ',y[i]:3:0);

end;

linfit1(x,y,y_calc,a,b,max);

writeln('a: ',a:3:1,' b: ',b:3:1);

for i:=1 to max do

writeln('y_calc: ',y_calc[i]:3:1);

end;

Sample ( szUnit,2 ) ;

end.

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

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

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

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

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

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

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

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

1. MY_ALL.pas

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

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

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

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

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

1 : 1 1 : 2 279519.44 1 279519.44

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

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

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

uses sampler;

const

szUnit: String = 'MA_NAR.pas';

max = 20;

type ary = array[1..max] of real;

procedure linfit1(x,y: ary; var y_calc: ary; var a,b:real; n:integer);

{ fit a straight line (y_calc) through n sets of x and y pairs of points }

var i : integer;

sum_x,sum_y,sum_xy,sum_x2,

sum_y2,xi,yi,sxy,sxx,

syy: real;

begin { linfit }

sum_x:=0.0;

sum_y:=0.0;

sum_xy:=0.0;

sum_x2:=0.0;

sum_y2:=0.0;

for i:=1 to n do

begin

xi:=x[i];

yi:=y[i];

sum_x:=sum_x+xi;

sum_y:=sum_y+yi;

sum_xy:=sum_xy+xi*yi;

sum_x2:=sum_x2+xi*xi;

sum_y2:=sum_y2+yi*yi;

end;

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:=1 to n do

y_calc[i]:=a+b*x[i]

end; { LINFIT }

var x,y,y_calc:ary;

i,k:integer;

a,b:real;

begin

{creating new mass x and y}

for k:=1 to 80 do

begin

Sample ( szUnit,1 ) ;

randomize;

Sample ( szUnit,2 ) ;

writeln('Input Data: ');

Sample ( szUnit,3 ) ;

for i:=1 to max do

begin

x[i] := i*10;

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

writeln('x[',i:2,'] = ',x[i]:3:0,' y[',i:2,'] = ',y[i]:3:0);

end;

Sample ( szUnit,4 ) ;

linfit1(x,y,y_calc,a,b,max);

Sample ( szUnit,5 ) ;

writeln('a: ',a:3:1,' b: ',b:3:1);

Sample ( szUnit,6 ) ;

for i:=1 to max do

writeln('y_calc: ',y_calc[i]:3:1);

Sample ( szUnit,7 ) ;

end;

end.

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

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

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

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

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

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

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

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

1. MA_NAR.pas

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

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

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

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

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

1 : 1 1 : 2 55796.28 80 697.45

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

1 : 2 1 : 3 903.47 80 11.29

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

1 : 3 1 : 4 80755.63 80 1009.45

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

1 : 4 1 : 5 2316.50 80 28.96

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

1 : 5 1 : 6 3196.50 80 39.96

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

1 : 6 1 : 7 126182.14 80 1577.28

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

1 : 7 1 : 1 0.00 79 0.00

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

Способы оптимизации: Будем применять оптимизацию, аналогичную той, которую применяли к программе написанной на языке «С».

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