- •Профилирование программы 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) сПбГэту, Мойсейчук Леонид.
Void main ()
{
SAMPLE;//49
double res;
double pi = 3.14159265359;
twopi = 2.0 / sqrt(pi);
lower = 0.0;
upper = 1;
if (upper >= 0.0)
{
res = simps(lower,upper,tol);
erf = twopi * res;
printf("%f", upper);
printf("%f\n", erf);
}
SAMPLE;//62
}
Отчет о результатах измерений для программы LABMET.EXE.
Создан программой Sampler ( версия от Feb 15 1999 )
1995-98 (C) сПбГэту, Мойсейчук Леонид.
Список обработанных файлов.
----------------------------------------------------------------------
NN Имя обработанного файла
----------------------------------------------------------------------
1. LABMET.CPP
----------------------------------------------------------------------
Таблица с результатами измерений ( используется 2 из 416 записей )
----------------------------------------------------------------------
Исх.Поз. Прием.Поз. Общее время(мкс) Кол-во прох. Среднее время(мкс)
----------------------------------------------------------------------
1 : 49 1 : 62 126.55 1 126.55
----------------------------------------------------------------------
Профилирование программы интегрирования методом Симпсона
(измерение времен выполнения функциональных участков)
#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;
}
Void main ()
{
double res;
double pi = 3.14159265359;
SAMPLE;//51
twopi = 2.0 / sqrt(pi);
SAMPLE;//53
lower = 0.0;
SAMPLE;//55
upper = 1;
SAMPLE;//57
if (upper >= 0.0)
{
SAMPLE;//60
res = simps(lower,upper,tol);
SAMPLE;//62
erf = twopi * res;
SAMPLE;//64
printf("%f", upper);
SAMPLE;//66
printf("%f\n", erf);
SAMPLE;//68
}
SAMPLE;//70
}
Отчет о результатах измерений для программы LABMET.EXE.
Создан программой Sampler ( версия от Feb 15 1999 )
1995-98 (C) сПбГэту, Мойсейчук Леонид.
Список обработанных файлов.
----------------------------------------------------------------------
NN Имя обработанного файла
----------------------------------------------------------------------
1. LABMET.CPP
----------------------------------------------------------------------
Таблица с результатами измерений ( используется 10 из 416 записей )
----------------------------------------------------------------------
Исх.Поз. Прием.Поз. Общее время(мкс) Кол-во прох. Среднее время(мкс)
----------------------------------------------------------------------
1 : 51 1 : 53 2.51 1 2.51
----------------------------------------------------------------------
1 : 53 1 : 55 1.68 1 1.68
----------------------------------------------------------------------
1 : 55 1 : 57 0.00 1 0.00
----------------------------------------------------------------------
1 : 57 1 : 60 0.84 1 0.84
----------------------------------------------------------------------
1 : 60 1 : 62 60.34 1 60.34
----------------------------------------------------------------------
1 : 62 1 : 64 0.84 1 0.84
----------------------------------------------------------------------
1 : 64 1 : 66 33.52 1 33.52
----------------------------------------------------------------------
1 : 66 1 : 68 23.47 1 23.47
----------------------------------------------------------------------
1 : 68 1 : 70 0.00 1 0.00
----------------------------------------------------------------------
Вывод: Наиболее ресурсоемкая операция - вывод на экран. Удалим эти операции.
Профилирование оптимизированной программы интегрирования методом Симпсона
(измерение времени полного выполнения программы)
#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;
}