5.2.1. Текст программы
Program laba;
uses Sampler;
type ary=array[0..1000] of real;
const PName: String[10] = 'prog.pas';
procedure sort(var a: ary; n: integer);
var done : boolean;
jump,i,j: integer;
hold :real;
begin
jump := n;
while jump > 1 do
begin
jump := jump div 2;
repeat
done := true;
for j := 1 TO n - jump dO
begin
i := j + jump;
if a[j] > a[i] then
begin
hold:=a[j];
a[j]:=a[i];
a[i]:=hold;
done := false;
end { if }
end { for }
until done
end; { while }
end; { sort }
var list : ary; i:integer;
begin
Sample(PName,55);
randomize;
for i:=0 to 1000 do
list[i]:=random;
sort(list, 1000);
Sample(PName, 59);
end.
5.2.2. Результат профилирования
----------------------------------------------------------------------
Исх.Поз. Прием.Поз. Общее время(мкс) Кол-во прох. Среднее время(мкс)
----------------------------------------------------------------------
1 : 55 1 : 59 9788.27 1 9788.27
----------------------------------------------------------------------
5.2.3. Текст программы
Program laba;
uses Sampler;
type ary=array[0..1000] of real;
const PName: String[10] = 'prog.pas';
procedure sort(var a: ary; n: integer);
var done : boolean;
jump,i,j: integer;
hold :real;
begin
Sample(PName, 12);
jump := n;
Sample(PName, 14);
while jump > 1 do
begin
jump := jump div 2;
Sample(PName, 18);
repeat
done := true;
Sample(PName, 21);
for j := 1 TO n - jump dO
begin
i := j + jump;
Sample(PName, 25);
if a[j] > a[i] then
begin
Sample(PName, 28);
hold:=a[j];
Sample(PName, 30);
a[j]:=a[i];
Sample(PName, 32);
a[i]:=hold;
Sample(PName, 34);
done := false;
Sample(PName, 36);
end { if }
end { for }
until done
end; { while }
Sample(PName, 41);
end; { sort }
var list : ary; i:integer;
begin
Sample(PName,46);
randomize;
for i:=0 to 1000 do
list[i]:=random;
Sample(PName, 50);
sort(list, 1000);
Sample(PName, 52);
end.
5.2.4. Результат профилирования
----------------------------------------------------------------------
Исх.Поз. Прием.Поз. Общее время(мкс) Кол-во прох. Среднее время(мкс)
----------------------------------------------------------------------
1 : 12 1 : 14 0.03 1 0.03
----------------------------------------------------------------------
1 : 14 1 : 18 0.07 1 0.07
----------------------------------------------------------------------
1 : 18 1 : 21 0.24 9 0.03
----------------------------------------------------------------------
1 : 21 1 : 25 3.59 63 0.06
----------------------------------------------------------------------
1 : 25 1 : 25 12571.92 51615 0.24
1 : 25 1 : 28 1919.95 7811 0.25
1 : 25 1 : 18 2.81 8 0.35
1 : 25 1 : 21 10.77 50 0.22
1 : 25 1 : 41 0.41 1 0.41
----------------------------------------------------------------------
1 : 28 1 : 30 1159.95 7811 0.15
----------------------------------------------------------------------
1 : 30 1 : 32 664.00 7811 0.09
----------------------------------------------------------------------
1 : 32 1 : 34 854.80 7811 0.11
----------------------------------------------------------------------
1 : 34 1 : 36 538.63 7811 0.07
----------------------------------------------------------------------
1 : 36 1 : 25 959.49 7807 0.12
1 : 36 1 : 21 0.46 4 0.11
----------------------------------------------------------------------
1 : 41 1 : 52 0.26 1 0.26
----------------------------------------------------------------------
1 : 46 1 : 50 169.77 1 169.77
----------------------------------------------------------------------
1 : 50 1 : 12 0.29 1 0.29
----------------------------------------------------------------------