- •Постановка задачи
- •Выполнение работы
- •Профилирование программы porost0.C
- •Профилирование программы test_cyc.C
- •Профилирование программы test_sub.C
- •1000*1000 Повторений
- •2000*1000 Повторений
- •5000*1000 Повторений
- •10000*1000 Повторений
- •Профилирование программы QuickSort.Cpp
- •Профилирование программы QuickSort.Pas
-
Профилирование программы test_cyc.C
Address |
Line |
Source |
Clockticks (EBS) |
Timer (TBS) |
|
1 |
#define Size 1000000 |
|
|
|
2 |
int i, tmp, dim[Size]; |
|
|
|
3 |
|
|
|
|
4 |
void main() |
|
|
0x1000 |
5 |
{ |
|
|
0x101E |
6 |
for(i=0;i<Size/10;i++){ tmp=dim[0]; dim[0]=dim[i]; dim[i]=tmp; }; |
1 |
1 |
0x1073 |
7 |
for(i=0;i<Size/5;i++){ tmp=dim[0]; dim[0]=dim[i]; dim[i]=tmp; }; |
2 |
2 |
0x10C8 |
8 |
for(i=0;i<Size/2;i++){ tmp=dim[0]; dim[0]=dim[i]; dim[i]=tmp; }; |
6 |
3 |
0x111D |
9 |
for(i=0;i<Size;i++) { tmp=dim[0]; dim[0]=dim[i]; dim[i]=tmp; }; |
10 |
10 |
0x1172 |
10 |
for(i=0;i<Size/10;i++) |
|
1 |
0x1197 |
11 |
{ tmp=dim[0]; dim[0]=dim[i]; dim[i]=tmp; }; |
1 |
|
0x11C7 |
12 |
for(i=0;i<Size/5;i++) |
|
|
0x11EC |
13 |
{ tmp=dim[0]; dim[0]=dim[i]; dim[i]=tmp; }; |
2 |
2 |
0x121C |
14 |
for(i=0;i<Size/2;i++) |
3 |
3 |
0x1241 |
15 |
{ tmp=dim[0]; dim[0]=dim[i]; dim[i]=tmp; }; |
2 |
1 |
0x1271 |
16 |
for(i=0;i<Size;i++) |
7 |
2 |
0x1296 |
17 |
{ tmp=dim[0]; dim[0]=dim[i]; dim[i]=tmp; }; |
4 |
8 |
0x12C6 |
18 |
for(i=0;i<Size/10;i++) |
|
1 |
0x12EB |
19 |
{ tmp=dim[0]; |
|
|
0x12F5 |
20 |
dim[0]=dim[i]; |
1 |
|
0x1307 |
21 |
dim[i]=tmp; |
|
|
0x1319 |
22 |
}; |
|
|
0x131B |
23 |
for(i=0;i<Size/5;i++) |
2 |
|
0x1340 |
24 |
{ tmp=dim[0]; |
|
|
0x134A |
25 |
dim[0]=dim[i]; |
|
|
0x135C |
26 |
dim[i]=tmp; |
|
1 |
0x136E |
27 |
}; |
|
|
0x1370 |
28 |
for(i=0;i<Size/2;i++) |
4 |
2 |
0x1395 |
29 |
{ tmp=dim[0]; |
|
1 |
0x139F |
30 |
dim[0]=dim[i]; |
2 |
1 |
0x13B1 |
31 |
dim[i]=tmp; |
|
|
0x13C3 |
32 |
}; |
|
1 |
0x13C5 |
33 |
for(i=0;i<Size;i++) |
3 |
5 |
0x13EA |
34 |
{ tmp=dim[0]; |
|
|
0x13F4 |
35 |
dim[0]=dim[i]; |
5 |
4 |
0x1406 |
36 |
dim[i]=tmp; |
1 |
|
0x1418 |
37 |
}; |
2 |
|
0x141A |
38 |
} |
|
|
Сравним времена выполнения циклов, полученные после профилирования разных форм записи циклов в тексте программы.
|
1 |
2 |
3 |
Size/10 |
1 |
1 |
1 |
Size/5 |
2 |
2 |
2 |
Size/2 |
6 |
5 |
6 |
Size |
10 |
11 |
11 |
Количество точек контроля, приходящихся на один цикл, напрямую зависит от количества итераций этого цикла. При этом их распределение не зависит от форматирования: для циклов, записанных тремя способами, получаем примерно одинаковые времена выполнения.