Скачиваний:
12
Добавлен:
01.05.2014
Размер:
134.66 Кб
Скачать

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

----------------------------------------------------------------------

Соседние файлы в папке Лаб3