- •Профилирование программы test_cyc.Cpp
- •Профилирование программы test_sub.Cpp
- •Void main()
- •1995-98 (C) сПбГэту, Мойсейчук Леонид.
- •Void main ()
- •1995-98 (C) сПбГэту, Мойсейчук Леонид.
- •Void main ()
- •1995-98 (C) сПбГэту, Мойсейчук Леонид.
- •Void main ()
- •1995-98 (C) сПбГэту, Мойсейчук Леонид
- •Void main ()
- •1995-98 (C) сПбГэту, Мойсейчук Леонид
- •1995-98 (C) сПбГэту, Мойсейчук Леонид.
- •1995-98 (C) сПбГэту, Мойсейчук Леонид.
- •1995-98 (C) сПбГэту, Мойсейчук Леонид.
- •1995-98 (C) сПбГэту, Мойсейчук Леонид.
Задание
-
Ознакомиться с документацией на SAMPLER и выполнить под его управлением тестовые программы test_cyc.c и test_sub.c c анализом параметров повторения циклов и проверкой их влияния на точность и чувствительность профилирования.
-
Скомпилировать и выполнить под управлением SAMPLER'а программы на Паскале и С, разработанные в 1-ой лабораторной работе. Выполнить разбиение программы на функциональные участки и снять профили для двух режимов: 1 - измерение только полного времени выполнения программы; 2 - измерение времен выполнения функциональных участков.
-
Выявить "узкие места", ввести в программы усовершенствования и получить новые профили.
Сравнить результаты, полученные для Паскаля и С, с аналогичными результатами, полученными с помощью Turboprofiler'а.
Реализация
Профилирование программы test_cyc.Cpp
#define Size 10000
#include "sampler.h"
int i, tmp, dim[Size];
void main()
{
SAMPLE;
for(i=0;i<Size/10;i++){ tmp=dim[0]; dim[0]=dim[i]; dim[i]=tmp; };
SAMPLE;
for(i=0;i<Size/5;i++){ tmp=dim[0]; dim[0]=dim[i]; dim[i]=tmp; };
SAMPLE;
for(i=0;i<Size/2;i++){ tmp=dim[0]; dim[0]=dim[i]; dim[i]=tmp; };
SAMPLE;
for(i=0;i<Size;i++) { tmp=dim[0]; dim[0]=dim[i]; dim[i]=tmp; };
SAMPLE;
SAMPLE;
for(i=0;i<Size/10;i++)
{ tmp=dim[0]; dim[0]=dim[i]; dim[i]=tmp; };
SAMPLE;
for(i=0;i<Size/5;i++)
{ tmp=dim[0]; dim[0]=dim[i]; dim[i]=tmp; };
SAMPLE;
for(i=0;i<Size/2;i++)
{ tmp=dim[0]; dim[0]=dim[i]; dim[i]=tmp; };
SAMPLE;
for(i=0;i<Size;i++)
{ tmp=dim[0]; dim[0]=dim[i]; dim[i]=tmp; };
SAMPLE;
SAMPLE;
for(i=0;i<Size/10;i++)
{ tmp=dim[0];
dim[0]=dim[i];
dim[i]=tmp;
};
SAMPLE;
for(i=0;i<Size/5;i++)
{ tmp=dim[0];
dim[0]=dim[i];
dim[i]=tmp;
};
SAMPLE;
for(i=0;i<Size/2;i++)
{ tmp=dim[0];
dim[0]=dim[i];
dim[i]=tmp;
};
SAMPLE;
for(i=0;i<Size;i++)
{ tmp=dim[0];
dim[0]=dim[i];
dim[i]=tmp;
};
SAMPLE;
}
Результаты профилирования:
Отчет о результатах измерений для программы TEST_CYC.EXE.
Создан программой Sampler ( версия от Feb 15 1999 )
1995-98 (c) СПбГЭТУ, Мойсейчук Леонид.
Список обработанных файлов.
----------------------------------------------------------------------
NN Имя обработанного файла
----------------------------------------------------------------------
1. TEST_CYC.CPP
----------------------------------------------------------------------
Таблица с результатами измерений ( используется 15 из 416 записей )
----------------------------------------------------------------------
Исх.Поз. Прием.Поз. Общее время(мкс) Кол-во прох. Среднее время(мкс)
----------------------------------------------------------------------
1 : 7 1 : 9 16.76 1 16.76
----------------------------------------------------------------------
1 : 9 1 : 11 31.85 1 31.85
----------------------------------------------------------------------
1 : 11 1 : 13 77.94 1 77.94
----------------------------------------------------------------------
1 : 13 1 : 15 153.37 1 153.37
----------------------------------------------------------------------
1 : 15 1 : 16 0.84 1 0.84
----------------------------------------------------------------------
1 : 16 1 : 19 16.76 1 16.76
----------------------------------------------------------------------
1 : 19 1 : 22 30.17 1 30.17
----------------------------------------------------------------------
1 : 22 1 : 25 76.27 1 76.27
----------------------------------------------------------------------
1 : 25 1 : 28 154.21 1 154.21
----------------------------------------------------------------------
1 : 28 1 : 29 0.00 1 0.00
----------------------------------------------------------------------
1 : 29 1 : 35 16.76 1 16.76
----------------------------------------------------------------------
1 : 35 1 : 41 31.01 1 31.01
----------------------------------------------------------------------
1 : 41 1 : 47 76.27 1 76.27
----------------------------------------------------------------------
1 : 47 1 : 53 153.37 1 153.37
--------------------------------------------------------
Вывод: Структура цикла практически не влияет на профилирование.