Программа test_cyc.C
Turbo Profiler Version 2.1 Thu Apr 22 03:01:47 2004
Program: D:\BORLANDC\BIN\TEST_CYC.EXE File E:\WORK\8_CEM\METR\MPO\LABS\LAB2_1\S
Time Counts
#define Size 10000
int i, tmp, dim[Size];
0.0000 1 void main()
{
0.0000 1 for(i=0;i<Size/10;i++){ tmp=dim[0]; dim[0]=dim[i]; dim[i]=tmp
0.0000 1 for(i=0;i<Size/5;i++){ tmp=dim[0]; dim[0]=dim[i]; dim[i]=tmp;
0.0000 1 for(i=0;i<Size/2;i++){ tmp=dim[0]; dim[0]=dim[i]; dim[i]=tmp;
0.0001 1 for(i=0;i<Size;i++) { tmp=dim[0]; dim[0]=dim[i]; dim[i]=tmp;
0.0000 1 for(i=0;i<Size/10;i++)
0.0558 1000 { tmp=dim[0]; dim[0]=dim[i]; dim[i]=tmp; };
0.0000 1 for(i=0;i<Size/5;i++)
0.0573 2000 { tmp=dim[0]; dim[0]=dim[i]; dim[i]=tmp; };
0.0000 1 for(i=0;i<Size/2;i++)
0.2266 5000 { tmp=dim[0]; dim[0]=dim[i]; dim[i]=tmp; };
0.0000 1 for(i=0;i<Size;i++)
0.3395 10000 { tmp=dim[0]; dim[0]=dim[i]; dim[i]=tmp; };
0.0000 1 for(i=0;i<Size/10;i++)
0.1657 1000 { tmp=dim[0];
0.0009 1000 dim[0]=dim[i];
0.0014 1000 dim[i]=tmp;
};
0.0000 1 for(i=0;i<Size/5;i++)
0.0574 2000 { tmp=dim[0];
0.0600 2000 dim[0]=dim[i];
0.0582 2000 dim[i]=tmp;
};
0.0000 1 for(i=0;i<Size/2;i++)
0.0613 5000 { tmp=dim[0];
0.3348 5000 dim[0]=dim[i];
0.1701 5000 dim[i]=tmp;
};
0.0000 1 for(i=0;i<Size;i++)
0.2312 10000 { tmp=dim[0];
0.4027 10000 dim[0]=dim[i];
0.3969 10000 dim[i]=tmp;
};
0.0000 1 }
Результаты профилирования по времени test_cyc.c
Turbo Profiler Version 2.1 Thu Apr 22 03:02:04 2004
Program: D:\BORLANDC\BIN\TEST_CYC.EXE
Execution Profile
Total time: 2.6215 sec
% of total: 99 %
Run: 1 of 1
Filter: All
Show: Time
Sort: Frequency
#TEST_CYC#35 0.4027 sec 15% |**********************************************
#TEST_CYC#36 0.3969 sec 15% |*********************************************
#TEST_CYC#17 0.3395 sec 12% |**************************************
#TEST_CYC#30 0.3348 sec 12% |**************************************
#TEST_CYC#34 0.2312 sec 8% |**************************
#TEST_CYC#15 0.2266 sec 8% |*************************
#TEST_CYC#31 0.1701 sec 6% |*******************
#TEST_CYC#19 0.1657 sec 6% |******************
#TEST_CYC#29 0.0613 sec 2% |*******
#TEST_CYC#25 0.0600 sec 2% |******
#TEST_CYC#26 0.0582 sec 2% |******
#TEST_CYC#24 0.0574 sec 2% |******
#TEST_CYC#13 0.0573 sec 2% |******
#TEST_CYC#11 0.0558 sec 2% |******
#TEST_CYC#21 0.0014 sec <1% |
#TEST_CYC#20 0.0009 sec <1% |
#TEST_CYC#9 0.0001 sec <1% |
#TEST_CYC#8 0.0000 sec <1% |
#TEST_CYC#7 0.0000 sec <1% |
#TEST_CYC#6 0.0000 sec <1% |
_main 0.0000 sec <1% |
#TEST_CYC#28 0.0000 sec <1% |
#TEST_CYC#23 0.0000 sec <1% |
#TEST_CYC#18 0.0000 sec <1% |
#TEST_CYC#16 0.0000 sec <1% |
#TEST_CYC#33 0.0000 sec <1% |
#TEST_CYC#14 0.0000 sec <1% |
#TEST_CYC#10 0.0000 sec <1% |
#TEST_CYC#12 0.0000 sec <1% |
#TEST_CYC#38 0.0000 sec <1% |
Результаты профилирования по частоте test_сyc.c
Turbo Profiler Version 2.1 Thu Apr 22 03:02:23 2004
Program: D:\BORLANDC\BIN\TEST_CYC.EXE
Execution Profile
Total time: 2.6215 sec
% of total: 99 %
Run: 1 of 1
Filter: All
Show: Counts
Sort: Frequency
#TEST_CYC#17 10000 13% |++++++++++++++++++++++++++++++++++++++++++++++
#TEST_CYC#36 10000 13% |++++++++++++++++++++++++++++++++++++++++++++++
#TEST_CYC#34 10000 13% |++++++++++++++++++++++++++++++++++++++++++++++
#TEST_CYC#35 10000 13% |++++++++++++++++++++++++++++++++++++++++++++++
#TEST_CYC#15 5000 6% |+++++++++++++++++++++++
#TEST_CYC#30 5000 6% |+++++++++++++++++++++++
#TEST_CYC#29 5000 6% |+++++++++++++++++++++++
#TEST_CYC#31 5000 6% |+++++++++++++++++++++++
#TEST_CYC#24 2000 2% |+++++++++
#TEST_CYC#13 2000 2% |+++++++++
#TEST_CYC#26 2000 2% |+++++++++
#TEST_CYC#25 2000 2% |+++++++++
#TEST_CYC#21 1000 1% |++++
#TEST_CYC#11 1000 1% |++++
#TEST_CYC#20 1000 1% |++++
#TEST_CYC#19 1000 1% |++++
_main 1 <1% |
#TEST_CYC#23 1 <1% |
#TEST_CYC#18 1 <1% |
#TEST_CYC#16 1 <1% |
#TEST_CYC#14 1 <1% |
#TEST_CYC#28 1 <1% |
#TEST_CYC#12 1 <1% |
#TEST_CYC#10 1 <1% |
#TEST_CYC#9 1 <1% |
#TEST_CYC#33 1 <1% |
#TEST_CYC#8 1 <1% |
#TEST_CYC#6 1 <1% |
#TEST_CYC#7 1 <1% |
#TEST_CYC#38 1 <1% |
Результаты профилирования по средним временам на 1 вызов test_сyc.c
Turbo Profiler Version 2.1 Thu Apr 22 03:02:37 2004
Program: D:\BORLANDC\BIN\TEST_CYC.EXE
Execution Profile
Total time: 2.6215 sec
% of total: 99 %
Run: 1 of 1
Filter: All
Show: Time per call
Sort: Frequency
#TEST_CYC#9 0.0001 sec/call |**********************************************
#TEST_CYC#19 0.0001 sec/call |**************************************
#TEST_CYC#8 0.0000 sec/call |*********************
#TEST_CYC#30 0.0000 sec/call |***************
#TEST_CYC#11 0.0000 sec/call |************
#TEST_CYC#15 0.0000 sec/call |**********
#TEST_CYC#35 0.0000 sec/call |*********
#TEST_CYC#36 0.0000 sec/call |*********
#TEST_CYC#31 0.0000 sec/call |*******
#TEST_CYC#17 0.0000 sec/call |*******
#TEST_CYC#25 0.0000 sec/call |******
#TEST_CYC#24 0.0000 sec/call |******
#TEST_CYC#26 0.0000 sec/call |******
#TEST_CYC#13 0.0000 sec/call |******
#TEST_CYC#7 0.0000 sec/call |******
#TEST_CYC#34 0.0000 sec/call |*****
#TEST_CYC#29 0.0000 sec/call |**
#TEST_CYC#6 0.0000 sec/call |*
_main 0.0000 sec/call |
#TEST_CYC#23 0.0000 sec/call |
#TEST_CYC#21 0.0000 sec/call |
#TEST_CYC#28 0.0000 sec/call |
#TEST_CYC#20 0.0000 sec/call |
#TEST_CYC#18 0.0000 sec/call |
#TEST_CYC#16 0.0000 sec/call |
#TEST_CYC#33 0.0000 sec/call |
#TEST_CYC#14 0.0000 sec/call |
#TEST_CYC#10 0.0000 sec/call |
#TEST_CYC#12 0.0000 sec/call |
#TEST_CYC#38 0.0000 sec/call |
По результатам проведенного профилирования можно сделать следующие выводы: когда цикл вместе с заголовком записан в одну строку, его выполнение занимает незначительный промежуток времени. Когда тело цикла записано в отдельную строку (без заголовка цикла) время выполнения цикла растет. Когда каждый оператор цикла (в том числе и заголовок) записан в отдельную строку, то уже рассматривается время выполнения каждого оператора по отдельности и в результате время выполнения всего цикла значительно возрастает.
Результаты профилирования test_sub.cpp