Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа №2.doc
Скачиваний:
23
Добавлен:
01.05.2014
Размер:
321.54 Кб
Скачать

Test_sub.Cpp

7,78% от 270 samples.

Address Line Clockticks Source

1 const unsigned Size = 1000;

2

3

4 void TestLoop(int nTimes)

01:0020 5 {

6 static int TestDim[Size];

7 int tmp;

8 int iLoop;

9

01:0038 10 while (nTimes > 0)

11 {

01:003E 12 nTimes --;

13

01:0047 14 iLoop = Size;

01:004E 15 3 while (iLoop > 0)

16 {

01:0054 17 2 iLoop -- ;

01:005D 18 3 tmp = TestDim[0];

01:0066 19 8 TestDim[0] = TestDim[nTimes];

01:0076 20 3 TestDim[nTimes] = tmp;

01:0083 21 2 }

01:0085 22 }

01:0087 23 } /* TestLoop */

24

25

26 void main()

01:00B0 27 {

01:00C8 28 TestLoop(Size / 10); // 100 * 1000 ?®?a®a?­?©

01:00D2 29 TestLoop(Size / 5); // 200 * 1000 ?®?a®a?­?©

01:00DF 30 TestLoop(Size / 2); // 500 * 1000 ?®?a®a?­?©

01:00EC 31 TestLoop(Size / 1); // 1000* 1000 ?®?a®a?­?©

01:00F9 32 }

Количество sample в процентах:

Address Line Clockticks Source

1 const unsigned Size = 1000;

2

3

4 void TestLoop(int nTimes)

01:0020 5 {

6 static int TestDim[Size];

7 int tmp;

8 int iLoop;

9

01:0038 10 while (nTimes > 0)

11 {

01:003E 12 nTimes --;

13

01:0047 14 iLoop = Size;

01:004E 15 "1,11%" while (iLoop > 0)

16 {

01:0054 17 "0,74%" iLoop -- ;

01:005D 18 "1,11%" tmp = TestDim[0];

01:0066 19 "2,96%" TestDim[0] = TestDim[nTimes];

01:0076 20 "1,11%" TestDim[nTimes] = tmp;

01:0083 21 "0,74%" }

01:0085 22 }

01:0087 23 } /* TestLoop */

24

25

26 void main()

01:00B0 27 {

01:00C8 28 TestLoop(Size / 10); // 100 * 1000 ?®?a®a?­?©

01:00D2 29 TestLoop(Size / 5); // 200 * 1000 ?®?a®a?­?©

01:00DF 30 TestLoop(Size / 2); // 500 * 1000 ?®?a®a?­?©

01:00EC 31 TestLoop(Size / 1); // 1000* 1000 ?®?a®a?­?©

01:00F9 32 }

В ходе профилирования данной программы было выявлено, что наибольшее время было затрачено на выполнения цикла while(этот цикл несет основную вычислительную нагрузку).

3.Программы из первой лабораторной работы

3.1 С

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

void sort (double a[], const int n)

{

int no_change;

double temp;

int j;

do

{

no_change=1;

for (j=0; j<=n-2; j=j+1)

{

if (a[j]>a[j+1])

{

temp = a[j];

a[j] = a[j+1];

a[j+1] = temp;

no_change = 0;

}

}

} while (no_change !=1);

}

void main()

{

const int n = 10000;

double a[n];

int j;

for (j=0; j<n; j=j+1)

{

a[j]=1000-j;

}

sort(a, n);

}

Профилирование:

3.2 Pascal

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

program bubble;

const n=10000;

var a:array[1..n] of real;

j:integer;

procedure sort(var a: array of real; n: integer);

var no_change : boolean;

j : integer;

temp : real;

begin

repeat

no_change:=true;

for j:=0 to n-2 do

begin

if a[j]>a[j+1] then

begin

temp:=a[j];

a[j]:=a[j+1];

a[j+1]:=temp;

no_change:=false;

end

end

until no_change

end;

begin

randomize;

for j:=1 to n do a[j]:=random(100);

sort(a,n);

end.

Профилирование: