- •Профилирование программы 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) сПбГэту, Мойсейчук Леонид.
Профилирование программы 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;
}