- •Профилирование программы test_cyc.Cpp
- •Профилирование программы test_sub.Cpp
- •Void main()
- •1995-98 (C) сПбГэту, Мойсейчук Леонид.
- •Void main ()
- •1995-98 (C) сПбГэту, Мойсейчук Леонид.
- •Void main ()
- •1995-98 (C) сПбГэту, Мойсейчук Леонид.
- •Void main ()
- •1995-98 (C) сПбГэту, Мойсейчук Леонид
- •Void main ()
- •1995-98 (C) сПбГэту, Мойсейчук Леонид
- •1995-98 (C) сПбГэту, Мойсейчук Леонид.
- •1995-98 (C) сПбГэту, Мойсейчук Леонид.
- •1995-98 (C) сПбГэту, Мойсейчук Леонид.
- •1995-98 (C) сПбГэту, Мойсейчук Леонид.
1995-98 (C) сПбГэту, Мойсейчук Леонид.
Список обработанных файлов.
----------------------------------------------------------------------
NN Имя обработанного файла
----------------------------------------------------------------------
1. Plab1.pas
----------------------------------------------------------------------
Таблица с результатами измерений ( используется 2 из 416 записей )
----------------------------------------------------------------------
Исх.Поз. Прием.Поз. Общее время(мкс) Кол-во прох. Среднее время(мкс)
----------------------------------------------------------------------
1 : 1 1 : 2 214.01 1 214.01
----------------------------------------------------------------------
Профилирование программы интегрирования методом Симпсона
(измерение времен выполнения функциональных участков)
uses sampler;
const szUnit : string = 'Plab1.pas';
const tol = 1.0E-4;
var sum,upper,lower,
erf,twopi : real;
function fx(x: real): real;
begin
fx:=exp(-x*x)
end;
procedure simps(lower,upper,tol : real; var sum : real);
var i : integer;
x,delta_x,even_sum,
odd_sum,end_sum,
sum1 : real;
pieces : integer;
begin
pieces:=2;
delta_x:=(upper-lower)/pieces;
odd_sum:=fx(lower+delta_x);
even_sum:=0.0;
end_sum:=fx(lower)+fx(upper);
sum:=(end_sum+4.0*odd_sum)*delta_x/3.0;
writeln(pieces:5,sum);
repeat
pieces:=pieces*2;
sum1:=sum;
delta_x:=(upper-lower)/pieces;
even_sum:=even_sum+odd_sum;
odd_sum:=0.0;
for i:=1 to pieces div 2 do
begin
x:=lower+delta_x*(2.0*i-1.0);
odd_sum:=odd_sum+fx(x)
end;
sum:=(end_sum+4.0*odd_sum+2.0*even_sum)*delta_x/3.0;
until abs(sum-sum1)<=abs(tol*sum1)
end;
begin
Sample(szUnit,1);
twopi := 2.0/sqrt(pi);
Sample(szUnit,2);
lower := 0.0;
Sample(szUnit,3);
upper := 1;
Sample(szUnit,4);
writeln;
Sample(szUnit,5);
writeln('Erf? ');
Sample(szUnit,6);
if upper >= 0.0 then
begin
Sample(szUnit,7);
simps(lower,upper,tol,sum);
Sample(szUnit,8);
erf:=twopi*sum;
Sample(szUnit,9);
writeln('Erf of ',upper:7:2,', is ',erf:12:8);
Sample(szUnit,10);
end;
Sample(szUnit,11);
end.
Отчет о результатах измерений для программы PLAB1.EXE.
Создан программой Sampler ( версия от Feb 15 1999 )
1995-98 (C) сПбГэту, Мойсейчук Леонид.
Список обработанных файлов.
----------------------------------------------------------------------
NN Имя обработанного файла
----------------------------------------------------------------------
1. Plab1.pas
----------------------------------------------------------------------
Таблица с результатами измерений ( используется 11 из 416 записей )
----------------------------------------------------------------------
Исх.Поз. Прием.Поз. Общее время(мкс) Кол-во прох. Среднее время(мкс)
----------------------------------------------------------------------
1 : 1 1 : 2 8.00 1 8.00
----------------------------------------------------------------------
1 : 2 1 : 3 0.02 1 0.02
----------------------------------------------------------------------
1 : 3 1 : 4 0.02 1 0.02
----------------------------------------------------------------------
1 : 4 1 : 5 25.49 1 25.49
----------------------------------------------------------------------
1 : 5 1 : 6 33.11 1 33.11
----------------------------------------------------------------------
1 : 6 1 : 7 0.20 1 0.20
----------------------------------------------------------------------
1 : 7 1 : 8 103.24 1 103.24
----------------------------------------------------------------------
1 : 8 1 : 9 0.24 1 0.24
----------------------------------------------------------------------
1 : 9 1 : 10 50.52 1 50.52
----------------------------------------------------------------------
1 : 10 1 : 11 0.05 1 0.05
----------------------------------------------------------------------
Вывод: Оптимизация такая же как в программе на С++.
Профилирование оптимизированной программы интегрирования методом Симпсона
(измерение времени полного выполнения программы)
uses sampler;
const szUnit : string = 'Plab1.pas';
const tol = 1.0E-4;
var sum,upper,lower,
erf,twopi : real;
function fx(x: real): real;
begin
fx:=exp(-x*x)
end;
procedure simps(lower,upper,tol : real; var sum : real);
var i : integer;
x,delta_x,even_sum,
odd_sum,end_sum,
sum1 : real;
pieces : integer;
begin
pieces:=2;
delta_x:=(upper-lower)/pieces;
odd_sum:=fx(lower+delta_x);
even_sum:=0.0;
end_sum:=fx(lower)+fx(upper);
sum:=(end_sum+4.0*odd_sum)*delta_x/3.0;
writeln(pieces:5,sum);
repeat
pieces:=pieces*2;
sum1:=sum;
delta_x:=(upper-lower)/pieces;
even_sum:=even_sum+odd_sum;
odd_sum:=0.0;
for i:=1 to pieces div 2 do
begin
x:=lower+delta_x*(2.0*i-1.0);
odd_sum:=odd_sum+fx(x)
end;
sum:=(end_sum+4.0*odd_sum+2.0*even_sum)*delta_x/3.0;
until abs(sum-sum1)<=abs(tol*sum1)
end;
begin
Sample(szUnit,1);
twopi := 2.0/sqrt(pi);
lower := 0.0;
upper := 1;
if upper >= 0.0 then
begin
simps(lower,upper,tol,sum);
erf:=twopi*sum;
end;
Sample(szUnit,2);
end.
Отчет о результатах измерений для программы PLAB1.EXE.
Создан программой Sampler ( версия от Feb 15 1999 )