- •1. Формулировка задания
- •2. Выполнение работы
- •2.1.1 Профилирование программы test_cyc.C
- •2.1.2 Профилирование программы test_sub.C
- •2.2.1.1 Профилирование программы linefit1.CPp(измерение времени полного выполнения программы)
- •2.2.1.2 Профилирование программы linefit1.CPp(измерение времен выполнения функциональных участков)
- •2.2.1.3 Профилирование оптимизированной программы linefit1.CPp(измерение времени полного выполнения программы)
- •2.2.1.4 Профилирование оптимизированной программы linefit1.CPp(измерение времен выполнения функциональных участков)
- •2.2.2.1 Профилирование программы linefit1.Pas(измерение времени полного выполнения программы)
- •2.2.2.2 Профилирование программы linefit1.Pas(измерение времен выполнения функциональных участков)
- •2.2.2.3 Профилирование оптимизированной программы linefit1.Pas(измерение времени полного выполнения программы)
- •2.2.2.4 Профилирование оптимизированной программы linefit1.Pas(измерение времен выполнения функциональных участков)
- •3. Выводы
2.1.2 Профилирование программы test_sub.C
Исходный текст программы:
#include "sampler.h"
const unsigned Size = 1000;
void TestLoop(int nTimes)
{
static int TestDim[Size];
int tmp;
int iLoop;
while (nTimes > 0)
{
nTimes --;
iLoop = Size;
while (iLoop > 0)
{
iLoop -- ;
tmp = TestDim[0];
TestDim[0] = TestDim[nTimes];
TestDim[nTimes] = tmp;
}
}
} /* TestLoop */
void main()
{
SAMPLE;
TestLoop(Size / 10); // 100 * 1000 повторений
SAMPLE;
TestLoop(Size / 5); // 200 * 1000 повторений
SAMPLE;
TestLoop(Size / 2); // 500 * 1000 повторений
SAMPLE;
TestLoop(Size / 1); // 1000* 1000 повторений
SAMPLE;
}
Результаты профилирования:
Отчет о результатах измерений для программы TEST_SUB.EXE.
Создан программой Sampler ( версия от Feb 15 1999 )
1995-98 (c) СПбГЭТУ, Мойсейчук Леонид.
Список обработанных файлов.
----------------------------------------------------------------------
NN Имя обработанного файла
----------------------------------------------------------------------
1. TEST_SUB.CPP
----------------------------------------------------------------------
Таблица с результатами измерений ( используется 5 из 416 записей )
----------------------------------------------------------------------
Исх.Поз. Прием.Поз. Общее время(мкс) Кол-во прох. Среднее время(мкс)
----------------------------------------------------------------------
1 : 29 1 : 31 553.14 1 553.14
----------------------------------------------------------------------
1 : 31 1 : 33 1125.56 1 1125.56
----------------------------------------------------------------------
1 : 33 1 : 35 2860.42 1 2860.42
----------------------------------------------------------------------
1 : 35 1 : 37 6594.14 1 6594.14
----------------------------------------------------------------------
Вывод: Время выполнения участков программы прямо пропорционально количеству вызовов функции на этих участках.
2.2.1.1 Профилирование программы linefit1.CPp(измерение времени полного выполнения программы)
Исходный текст программы:
#include <stdlib.h>
#include <stdio.h>
#include "sampler.h"
#define size 20
void linfit1(double x[size],double y[size], double* y_calc, double* a, double* b,int n)
{
int i;
double sum_x,sum_y,sum_xy,sum_x2,sum_y2,xi,yi,sxy,sxx,syy;
sum_x = 0;
sum_y = 0;
sum_xy = 0;
sum_x2 = 0;
sum_y2 = 0;
for (i=0; i<n; i++)
{
xi=x[i];
yi=y[i];
sum_x += xi;
sum_y += yi;
sum_xy += xi*yi;
sum_x2 += xi*xi;
sum_y2 += yi*yi;
}
sxx = sum_x2-sum_x*sum_x/n;
sxy = sum_xy-sum_x*sum_y/n;
syy = sum_y2-sum_y*sum_y/n;
*b=sxy/sxx;
*a=((sum_x2*sum_y-sum_x*sum_xy)/n)/sxx;
for (i=0;i<n;i++)
*(y_calc+i) = *a + *b * x[i];
}
void main(void)
{
SAMPLE;//35
int i,k;
double a,b,x[size],y[size],y_calc[size];
for (k=0;k<80;k++)
{
randomize();
printf("Input Data: \n");
for (i=0;i<size;i++)
{
x[i] = 10+i*10;
y[i] = 10+i*10 + random(20) - 10;
printf("x[%d] = %3.1f y[%d] = %3.1f\n",i,x[i],i,y[i]);
}
linfit1(x,y,&y_calc[0],&a,&b,size);
printf("a: %3.1f, b: %3.1f\n",a,b);
for (i=0;i<size;i++)
printf("y_calc = %3.1f\n",y_calc[i]);
}
SAMPLE;//53
}
Результаты профилирования:
Отчет о результатах измерений для программы MY_ALL.EXE.
Создан программой Sampler ( версия от Feb 15 1999 )
1995-98 (c) СПбГЭТУ, Мойсейчук Леонид.
Список обработанных файлов.
----------------------------------------------------------------------
NN Имя обработанного файла
----------------------------------------------------------------------
1. MY_ALL.CPP
----------------------------------------------------------------------
Таблица с результатами измерений ( используется 2 из 416 записей )
----------------------------------------------------------------------
Исх.Поз. Прием.Поз. Общее время(мкс) Кол-во прох. Среднее время(мкс)
----------------------------------------------------------------------
1 : 35 1 : 53 264640.71 1 264640.71
----------------------------------------------------------------------