Скачиваний:
15
Добавлен:
01.05.2014
Размер:
90.11 Кб
Скачать
  1. Профилирование программы test_sub.C tbs (Time Based Sampling)

Address Line Clockticks Source

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 while (iLoop > 0)

16 {

01:0054 17 iLoop -- ;

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

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

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

01:0083 21 }

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 }

Ebs (Event Based Sampling)

Address Line Clockticks Source

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 201 while (nTimes > 0)

11 {

01:003E 12 32 nTimes --;

13

01:0047 14 4 iLoop = Size;

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

16 {

01:0054 17 2235 iLoop -- ;

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

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

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

01:0083 21 4510 }

01:0085 22 1 }

01:0087 23 2 } /* TestLoop */

24

25

26 void main()

01:00B0 27 1 {

01:00C8 28 TestLoop(Size / 10); // 100 * 1000 повторений

01:00D2 29 TestLoop(Size / 5); // 200 * 1000 повторений

01:00DF 30 TestLoop(Size / 2); // 500 * 1000 повторений

01:00EC 31 TestLoop(Size / 1); // 1000* 1000 повторений

01:00F9 32 }

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

  1. Профилирование программы sort.C tbs (Time Based Sampling)

Address Line Clockticks Source

1

2 " void swap (float arr[], int i, int j)"

01:0030 3 {

4 float hold;

01:0048 5 hold = arr[i];

01:0054 6 arr[i]= arr[j];

01:0066 7 arr[j]= hold;

01:0072 8 }

9

10 " void sort(float a[], int n)"

01:0090 11 {

12 " int done, jump, i;"

01:00A8 13 jump = n;

01:00AE 14 while (jump > 1)

15 {

01:00B4 16 jump = jump / 2;

17 do {

01:00BF 18 done = 1;

01:00C6 19 for (int j = 0; j < (n - jump); j++)

20 {

01:00E3 21 i = j + jump;

01:00EC 22 if (a[j] > a[i])

23 {

01:0105 24 " swap(a, i, j);"

01:0119 25 done = 0;

26 }

01:0120 27 }

01:0122 28 } while(! done) ;

01:0128 29 }

01:012A 30 }

31

32

33 int main()

01:0140 34 {

35 float array[10000];

01:0162 36 for(int i = 0; i < 10000; i++)

37 {

01:0189 38 1 array[i] = 10000-i;

01:01AD 39 }

01:01AF 40 " sort(array, 8);"

41

42

01:01C0 43 return 0;

01:01C2 44 }

45

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