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

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

#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 558.17 1 558.17

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

1 : 31 1 : 33 1126.40 1 1126.40

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

1 : 33 1 : 35 3007.93 1 3007.93

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

1 : 35 1 : 37 5787.89 1 5787.89

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

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

Профилирование программы интегрирования методом Симпсона

(измерение времени полного выполнения программы)

На С++

#include <iostream.h>

#include <conio.h>

#include <stdio.h>

#include <math.h>

#include "Sampler.h"

const double tol = 1.0E-4;

double sum, upper, lower, erf, twopi;

double fx(double x)

{

return exp(-x * x);

}

double simps(double lower,double upper,double tol)

{

int i;

double x,delta_x,even_sum,odd_sum,end_sum, sum1;

int pieces;

double sum;

pieces = 2;

delta_x = (upper - lower) / pieces;

odd_sum = fx(lower + delta_x);

even_sum = 0.0;

end_sum = fx(lower) + fx(upper);

sum = (end_sum + 4.0 * odd_sum) * delta_x / 3.0;

printf("%d", pieces);

printf("%f", sum);

do

{

pieces = pieces * 2;

sum1 = sum;

delta_x = (upper - lower) / pieces;

even_sum = even_sum + odd_sum;

odd_sum = 0.0;

for (i = 1; i <= (pieces / 2); i++)

{

x = lower + delta_x * (2.0 * i - 1.0);

odd_sum = odd_sum + fx(x);

}

sum = (end_sum + 4.0 * odd_sum + 2.0 * even_sum) * delta_x / 3.0;

}

while (abs(sum - sum1) > abs(tol * sum1));

return sum;

}