2.2.1 Профилирование программы test_cyc.C
Turbo Profiler Version 2.1 Tue Mar 29 17:03:11 2005
Program: C:\INSTIT~1\MYWORK~1\МПО\LAB2\PART2_~1\TEST_CYC.EXE File C:\INSTIT~1\M
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.0000 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.0053 1000 { tmp=dim[0]; dim[0]=dim[i]; dim[i]=tmp; };
0.0000 1 for(i=0;i<Size/5;i++)
0.0634 2000 { tmp=dim[0]; dim[0]=dim[i]; dim[i]=tmp; };
0.0000 1 for(i=0;i<Size/2;i++)
0.0775 5000 { tmp=dim[0]; dim[0]=dim[i]; dim[i]=tmp; };
0.0000 1 for(i=0;i<Size;i++)
0.4288 10000 { tmp=dim[0]; dim[0]=dim[i]; dim[i]=tmp; };
0.0000 1 for(i=0;i<Size/10;i++)
0.0051 1000 { tmp=dim[0];
0.1148 1000 dim[0]=dim[i];
0.0054 1000 dim[i]=tmp;
};
0.0000 1 for(i=0;i<Size/5;i++)
0.0640 2000 { tmp=dim[0];
0.0086 2000 dim[0]=dim[i];
0.0084 2000 dim[i]=tmp;
};
0.0000 1 for(i=0;i<Size/2;i++)
0.4086 5000 { tmp=dim[0];
0.0726 5000 dim[0]=dim[i];
0.4607 5000 dim[i]=tmp;
};
0.0000 1 for(i=0;i<Size;i++)
0.4822 10000 { tmp=dim[0];
0.3185 10000 dim[0]=dim[i];
0.5402 10000 dim[i]=tmp;
};
0.0000 1 }
Вывод: Если программу расположить в большем количестве строк, то профилировщику потребуется, несомненно, больше ресурсов на ее профилирование. Это плохо влияет на качество профилирования.
2.2.2 Профилирование программы test_sub.C
Turbo Profiler Version 2.1 Tue Mar 29 17:22:52 2005
Program: D:\_MYDOCS\LETI\8SEM\МЕТРОЛ~1\LAB2\TEST\TEST_SUB.EXE File D:\_MYDOCS\L
Time Counts
const unsigned Size = 1000;
0.0000 4 void TestLoop(int nTimes)
{
static int TestDim[Size];
int tmp;
int iLoop;
0.0570 882 while (nTimes > 0)
{
0.0020 879 nTimes --;
0.0570 879 iLoop = Size;
39.211 879797 while (iLoop > 0)
{
42.213 878918 iLoop -- ;
39.204 878918 tmp = TestDim[0];
39.137 878918 TestDim[0] = TestDim[nTimes];
42.591 878918 TestDim[nTimes] = tmp;
}
}
0.0000 3 } /* TestLoop */
0.0000 1 void main()
{
0.0000 1 TestLoop(Size / 10); // 100 * 1000 повторений
0.0000 1 TestLoop(Size / 5); // 200 * 1000 повторений
0.0000 1 TestLoop(Size / 2); // 500 * 1000 повторений
0.0000 1 TestLoop(Size / 1); // 1000* 1000 повторений
0 0 }
Вывод: Процедуры и функции не позволяют профилировать программу.