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

1.4. Граф вызова функций

Время выполнения модуля prost0.exe 296112

2. Профилирование test_cyc.C

2.1. Отчет по процессам

2.2. Отчет по модулям

Модуль test_cyc.exeзанимает около 45% времени ЦП.

Process

Module

CPU%

Samples

PID

32-bit

16-bit

V8086

test_cyc.exe

test_cyc.exe

44,5

255

532

255

0

0

test_cyc.exe

ntoskrnl.exe

2,3

13

532

13

0

0

test_cyc.exe

hal.dll

0,7

4

532

4

0

0

test_cyc.exe

LTSMT.sys

0,7

4

532

4

0

0

test_cyc.exe

win32k.sys

0,3

2

532

2

0

0

test_cyc.exe

SYMEVENT.SYS

0,2

1

532

1

0

0

test_cyc.exe

stmatm.sys

0,2

1

532

1

0

0

2.3. Представление результатов в исходном коде

Address

Line

counts

absolute

relative

Source

 

1

 

 

 

#define Size 1000000

 

2

 

 

 

int i, tmp, dim[Size];

 

3

 

 

 

 

4

 

 

 

void main()

01:0010

5

 

 

 

{

01:0013

6

5

0,87%

1,96%

for(i=0;i<Size/10;i++){ tmp=dim[0]; dim[0]=dim[i]; dim[i]=tmp; };

01:006B

7

10

1,75%

3,92%

for(i=0;i<Size/5;i++){ tmp=dim[0]; dim[0]=dim[i]; dim[i]=tmp; };

01:00C3

8

27

4,71%

10,59%

for(i=0;i<Size/2;i++){ tmp=dim[0]; dim[0]=dim[i]; dim[i]=tmp; };

01:011B

9

44

7,68%

17,25%

for(i=0;i<Size;i++) { tmp=dim[0]; dim[0]=dim[i]; dim[i]=tmp; };

01:0173

10

2

0,35%

0,78%

for(i=0;i<Size/10;i++)

01:0198

11

3

0,52%

1,18%

{ tmp=dim[0]; dim[0]=dim[i]; dim[i]=tmp; };

01:01CB

12

 

 

 

for(i=0;i<Size/5;i++)

01:01F0

13

9

1,57%

3,53%

{ tmp=dim[0]; dim[0]=dim[i]; dim[i]=tmp; };

01:0223

14

1

0,17%

0,39%

for(i=0;i<Size/2;i++)

01:0248

15

21

3,66%

8,24%

{ tmp=dim[0]; dim[0]=dim[i]; dim[i]=tmp; };

01:027B

16

10

1,75%

3,92%

for(i=0;i<Size;i++)

01:02A0

17

36

6,28%

14,12%

{ tmp=dim[0]; dim[0]=dim[i]; dim[i]=tmp; };

01:02D3

18

 

 

 

for(i=0;i<Size/10;i++)

01:02F8

19

 

 

 

{ tmp=dim[0];

01:0304

20

3

0,52%

1,18%

dim[0]=dim[i];

01:0316

21

2

0,35%

0,78%

dim[i]=tmp;

01:0329

22

 

 

 

};

01:032B

23

2

0,35%

0,78%

for(i=0;i<Size/5;i++)

01:0350

24

 

 

 

{ tmp=dim[0];

01:035C

25

5

0,87%

1,96%

dim[0]=dim[i];

01:036E

26

3

0,52%

1,18%

dim[i]=tmp;

01:0381

27

 

 

 

};

01:0383

28

3

0,52%

1,18%

for(i=0;i<Size/2;i++)

01:03A8

29

 

 

 

{ tmp=dim[0];

01:03B4

30

21

3,66%

8,24%

dim[0]=dim[i];

01:03C6

31

1

0,17%

0,39%

dim[i]=tmp;

01:03D9

32

 

 

 

};

01:03DB

33

7

1,22%

2,75%

for(i=0;i<Size;i++)

01:0400

34

1

0,17%

0,39%

{ tmp=dim[0];

01:040C

35

35

6,11%

13,73%

dim[0]=dim[i];

01:041E

36

2

0,35%

0,78%

dim[i]=tmp;

01:0431

37

2

0,35%

0,78%

};

01:0433

38

 

 

 

}

Сравним времена выполнения циклов, полученные после профилирования разных форм записи циклов в тексте программы.

1

2

3

Size/10

1,96

1,96

1,96

Size/5

3,92

3,53

3,92

Size/2

10,59

8,63

9,81

Size

17,25

18,04

18,43

Количество точек контроля, приходящихся на один цикл, напрямую зависит от количества итераций этого цикла. При этом их распределение не зависит от форматирования: для циклов, записанных тремя способами, получаем примерно одинаковые времена выполнения.