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

Ebs (Event Based Sampling)

Address Line Clockticks Source

1 program Project1;

2

3 {$APPTYPE CONSOLE}

4

5 uses

6 SysUtils;

7

8 type Tarr = array [1..10000] of real;

9

10 var j: integer;

11 procedure sort(var a: Tarr; n: integer);

12

13 var done : boolean;

14 " jump,i,j: integer;"

15

16 " procedure swap(var p,q: real);"

17 var hold : real;

18

01:7178 19 202 begin

01:717E 20 181 hold:=p;

01:7189 21 142 p:=q;

01:7193 22 122 q:=hold

01:719E 23 288 end;

24

01:71A4 25 begin

01:71B0 26 jump:=n;

01:71B7 27 while jump>1 do

28 begin

01:71BE 29 jump:=jump div 2;

30 repeat

01:71CD 31 done:=true;

01:71CF 32 414 for j:=1 to n - jump do

33 begin

01:71E1 34 390 i:=j+jump;

01:71E7 35 3583 if a[j]>a[i] then

36 begin

01:71F2 37 324 " swap(a[j],a[i]);"

01:71FD 38 174 done:=false

39 end

40 end

01:71FF 41 572 until done

42 end

01:7211 43 end;

44

45 var mass: Tarr;

01:7280 46 2 begin

47

01:7298 48 120 for j:=1 to 10000 do mass[j]:= 10000-j;

01:72BE 49 " sort(mass, 100000);"

01:72CD 50 end.

51

Так как операторы ввода/вывода занимают большую часть времени выполнения программы, операторы вывода были удалены, а ввод был заменен автоматической генерацией массива.

Как показывает профилирование, программа на Pascale выполняется медленнее, чем на С. Наибольшее время используется для выполнения процедуры swap(), так как число обменов элементов очень велико. Возможно, описание этой процедуры как встраиваемой ускорит выполнение программы. Так же много времени занимают операции сравнения элементов массива (как было выяснено ранее, операции обращения к элементам массива довольно медленны) а также генерация элементов массива.

1 Значение параметра Sampling Interval = 0,001 ms

8

Соседние файлы в папке Лабораторная работа №21