- •Министерство Образования и Науки рф
- •Введение
- •Выполнение работы Тестовые программы test_cyc.C
- •Test_sub.C
- •Выполнение программ из л.Р. 1 Программа на Си Измерение полного времени выполнения программы
- •Результат профилирования:
- •Измерение времен выполнения функциональных участков
- •Результат профилирования:
- •Программа на Паскаль Измерение полного времени выполнения программы
- •Результаты профилирования:
- •Измерение времен выполнения функциональных участков
- •Результаты профилирования:
Измерение времен выполнения функциональных участков
Расставим метки Sampler’aв программе следующим образом:
#include <math.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include "inc\sampler.h"
const int count = 500;
float x,er,ec;
int done;
float erf(float x)
{
SAMPLE;
const sqrtpi = 1.7724538,
tol = 1.0E-4;
float x2,sum,sum1,term;
int k,i;
x2 = x*x;
sum=x;
term=x;
SAMPLE;
for(i=0; term<tol*sum; i++) {
SAMPLE;
sum1=sum;
term=2.0*term*x2/(1.0+2.0*i);
sum=term+sum1;
SAMPLE;
}
SAMPLE;
return (2*sum*exp(-x2)/sqrtpi);
}
float erfc( float x )
{
SAMPLE;
const sqrtpi = 1.7724538;
float terms = 12;
float x2,u,v,sum ;
int i;
x2=x*x;
SAMPLE;
v=1.0/(2.0*x2);
SAMPLE;
u=1.0+v*(terms+1.0);
SAMPLE;
for(i=terms; i>1; i--) {
SAMPLE;
sum=1.0+i*v/u;
u=sum;
SAMPLE;
}
SAMPLE;
return(exp(-x2)/(x*sum*sqrtpi));
}
void main()
{
SAMPLE;
int k;
done=0;
randomize();
SAMPLE;
for(k=0; k<count; k++) {
SAMPLE;
x=random(k)/100;
SAMPLE;
if( x < 0.0 ) { done = 1; }
else
{
if (x==0.0 )
{
SAMPLE;
er=0.0;
ec=1.0;
SAMPLE;
}
else
{
if( x<1.5)
{
SAMPLE;
er=erf(x);
SAMPLE;
ec=1.0-er;
SAMPLE;
}
else
{
SAMPLE;
ec=erfc(x);
SAMPLE;
er=1.0-ec;
SAMPLE;
}
}
}
SAMPLE;
}
}
Результат профилирования:
Список обработанных файлов.
----------------------------------------------------------------------
NN Имя обработанного файла
----------------------------------------------------------------------
1. MMM20.CPP
----------------------------------------------------------------------
Таблица с результатами измерений ( используется 23 из 416 записей )
----------------------------------------------------------------------
Исх.Поз. Прием.Поз. Общее время(мкс) Кол-во прох. Среднее время(мкс)
----------------------------------------------------------------------
1 : 11 1 : 19 108.95 128 0.85
----------------------------------------------------------------------
1 : 19 1 : 27 109.79 128 0.86
----------------------------------------------------------------------
1 : 27 1 : 79 156.72 128 1.22
----------------------------------------------------------------------
1 : 32 1 : 38 88.84 110 0.81
----------------------------------------------------------------------
1 : 38 1 : 40 93.03 110 0.85
----------------------------------------------------------------------
1 : 40 1 : 42 99.73 110 0.91
----------------------------------------------------------------------
1 : 42 1 : 44 100.57 110 0.91
----------------------------------------------------------------------
1 : 44 1 : 47 56035.97 1210 46.31
----------------------------------------------------------------------
1 : 47 1 : 49 55043.66 110 500.40 // цикл
----------------------------------------------------------------------
1 : 49 1 : 87 267.35 110 2.43
----------------------------------------------------------------------
1 : 54 1 : 58 9.22 1 9.22
----------------------------------------------------------------------
1 : 58 1 : 60 0.84 1 0.84
----------------------------------------------------------------------
1 : 60 1 : 62 539.73 500 1.08
----------------------------------------------------------------------
1 : 62 1 : 68 194.44 262 0.74
1 : 62 1 : 77 98.90 128 0.77
1 : 62 1 : 85 92.19 110 0.84
----------------------------------------------------------------------
1 : 68 1 : 71 243.89 262 0.93
----------------------------------------------------------------------
1 : 71 1 : 93 200.31 262 0.76
----------------------------------------------------------------------
1 : 77 1 : 11 98.90 128 0.77
----------------------------------------------------------------------
1 : 79 1 : 81 154.00 128 1.20
----------------------------------------------------------------------
1 : 81 1 : 93 105.60 128 0.83
----------------------------------------------------------------------
1 : 85 1 : 32 78.78 110 0.72
----------------------------------------------------------------------
1 : 87 1 : 89 89.68 110 0.82
----------------------------------------------------------------------
1 : 89 1 : 93 81.30 110 0.74
----------------------------------------------------------------------
1 : 93 1 : 60 393.91 499 0.79
----------------------------------------------------------------------
Результаты профилирования показывают, что наибольшее время затрачивается на выполнение цикла, что обусловлено количеством его итераций. В остальном же, программа работает быстро и в оптимизации не нуждается.