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

2.2.1 Профилирование программы test_cyc.C

Turbo Profiler Version 2.1 Wed Mar 28 22:39:52 2007

Program: C:\ЛЭТИ\SEM_8\МЕТРОЛ~1\LABS\MY\LAB2_1\PART2_~1\TESTCY~1\TEST_CYC.EXE F

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.0025 1000 { tmp=dim[0]; dim[0]=dim[i]; dim[i]=tmp; };

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

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

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

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

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

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

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

0.0564 1000 { tmp=dim[0];

0.0568 1000 dim[0]=dim[i];

0.0020 1000 dim[i]=tmp;

};

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

0.0040 2000 { tmp=dim[0];

0.0578 2000 dim[0]=dim[i];

0.1140 2000 dim[i]=tmp;

};

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

0.1195 5000 { tmp=dim[0];

0.0648 5000 dim[0]=dim[i];

0.2297 5000 dim[i]=tmp;

};

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

0.2468 10000 { tmp=dim[0];

0.5503 10000 dim[0]=dim[i];

0.6373 10000 dim[i]=tmp;

};

0.0000 1 }

Вывод: Если программу расположить в большем количестве строк, то профилировщику потребуется, несомненно, больше ресурсов на ее профилирование. Это плохо влияет на качество профилирования.

2.2.2 Профилирование программы test_sub.C

Turbo Profiler Version 2.1 Wed Mar 28 22:20:36 2007

Program: C:\ЛЭТИ\SEM_8\МЕТРОЛ~1\LABS\MY\LAB2_1\PART2_~1\TESTSU~1\TEST_SUB.EXE F

Time Counts

const unsigned Size = 1000;

0.0000 4 void TestLoop(int nTimes)

{

static int TestDim[Size];

int tmp;

int iLoop;

0.0652 1804 while (nTimes > 0)

{

0.0600 1800 nTimes --;

0.1129 1800 iLoop = Size;

79.043 1801800 while (iLoop > 0)

{

75.590 1800000 iLoop -- ;

83.030 1800000 tmp = TestDim[0];

76.721 1800000 TestDim[0] = TestDim[nTimes];

76.215 1800000 TestDim[nTimes] = tmp;

}

}

0.0000 4 } /* 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.0000 1 }

Вывод: Процедуры и функции не позволяют профилировать программу.

Процесс выполнения программы под управлением профилировщика занимает много времени и приводит к тому, что результаты такого профилирования крайне неточны.