- •_________________________
- •1. Профилирование prost0.Exe
- •1.1. Отчет по модулям
- •1.2. Отчет по процессам
- •1.3. Представление результатов в исходном коде
- •1.4. Граф вызова функций
- •2. Профилирование test_cyc.C
- •2.1. Отчет по процессам
- •2.2. Отчет по модулям
- •2.3. Представление результатов в исходном коде
- •2.4 Граф вызова функций
- •3. Профилирование test_sub.C
- •3.3 Исследование влияния параметров циклов на точность профилировки
- •4. Профилирование программы из лабораторной работы 1
- •4.1. Отчет по модулям
- •4.2. Отчет по процессам
- •4.3. Представление результатов в исходном коде
- •4.4 Граф вызова функций
4. Профилирование программы из лабораторной работы 1
4.1. Отчет по модулям
Время выполнения модуля lab1.exeзанимает 75,34% времени ЦП.
4.2. Отчет по процессам
Process Module CPU% Samples PID 32-bit 16-bit V8086
Lab1.exe Lab1.exe "75,3" 1124 212 1124 0 0
Lab1.exe ntoskrnl.exe "0,7" 10 212 10 0 0
Lab1.exe LTSMT.sys "0,5" 8 212 8 0 0
Lab1.exe Ntfs.sys "0,4" 6 212 6 0 0
Lab1.exe hal.dll "0,3" 4 212 4 0 0
Lab1.exe win32k.sys "0,1" 2 212 2 0 0
Lab1.exe ntdll.dll "0,1" 2 212 2 0 0
4.3. Представление результатов в исходном коде
Address |
Line |
counts |
relative |
Clockticks |
Source |
|
1 |
|
|
|
#include <stdlib.h> |
|
2 |
|
|
|
#include <stdio.h> |
|
3 |
|
|
|
|
|
4 |
|
|
|
const int Size = 1000; |
|
5 |
|
|
|
|
|
6 |
|
|
|
void swap(float& p, float& q) |
01:0030 |
7 |
217 |
19,31% |
14,54% |
{ |
01:0048 |
8 |
114 |
10,14% |
7,64% |
float hold=p; |
01:0050 |
9 |
21 |
1,87% |
1,41% |
p=q; |
01:005A |
10 |
10 |
0,89% |
0,67% |
q=hold; |
01:0062 |
11 |
21 |
1,87% |
1,41% |
} |
|
12 |
|
|
|
|
|
13 |
|
|
|
void sort(float* a, int n) |
01:0080 |
14 |
|
|
|
{ |
|
15 |
|
|
|
int done; |
01:0098 |
16 |
|
|
|
int jump=n,i,j; |
01:009E |
17 |
|
|
|
while (jump>1) |
|
18 |
|
|
|
{ |
01:00A8 |
19 |
|
|
|
jump/=2; |
|
20 |
|
|
|
do |
|
21 |
|
|
|
{ |
01:00B3 |
22 |
|
|
|
done=1; |
01:00BA |
23 |
178 |
15,84% |
11,93% |
for (j=0; j<n-jump; ++j) |
|
24 |
|
|
|
{ |
01:00D7 |
25 |
40 |
3,56% |
2,68% |
i=j+jump; |
01:00E0 |
26 |
365 |
32,47% |
24,46% |
if (a[j]>a[i]) |
|
27 |
|
|
|
{ |
01:00F9 |
28 |
78 |
6,94% |
5,23% |
swap(a[j],a[i]); |
01:0115 |
29 |
|
|
|
done=0; |
|
30 |
|
|
|
} |
01:011C |
31 |
51 |
4,54% |
3,42% |
} |
01:011E |
32 |
|
|
|
}while(!done); |
01:0124 |
33 |
|
|
|
} |
01:0129 |
34 |
|
|
|
} |
|
35 |
|
|
|
|
|
36 |
|
|
|
int main() |
01:0170 |
37 |
|
|
|
{ |
01:018E |
38 |
|
|
|
for (int it=0; it<500; ++it) |
|
39 |
|
|
|
{ |
|
40 |
|
|
|
float list[Size]; |
01:01A9 |
41 |
|
|
|
srand(0); |
01:01B3 |
42 |
3 |
0,27% |
0,20% |
for(int i=0; i<Size; ++i) |
01:01DA |
43 |
8 |
0,71% |
0,54% |
list[i]=rand(); |
01:01FA |
44 |
|
|
|
sort(list, Size); |
01:020E |
45 |
|
|
|
} |
01:0210 |
46 |
|
|
|
return 0; |
01:0212 |
47 |
|
|
|
} |
Основное узкое место программы – строка 26: доступ к элементам массивов и условный оператор и функция swap. Устранить эти узкие места не представляется возможным…