- •Министерство Образования и Науки рф
- •Введение
- •Выполнение работы Тестовые программы test_cyc.C
- •Test_sub.C
- •Выполнение программ из л.Р. 1 Программа на Си Измерение полного времени выполнения программы
- •Результат профилирования:
- •Измерение времен выполнения функциональных участков
- •Результат профилирования:
- •Программа на Паскаль Измерение полного времени выполнения программы
- •Результаты профилирования:
- •Измерение времен выполнения функциональных участков
- •Результаты профилирования:
Test_sub.C
Расставим метки в тексте программы. Получим:
#include "inc\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;
}}}
void main()
{
SAMPLE;
TestLoop(Size / 10);
SAMPLE;
TestLoop(Size / 5);
SAMPLE;
TestLoop(Size / 2);
SAMPLE;
TestLoop(Size / 1);
SAMPLE;
}
Список обработанных файлов.
----------------------------------------------------------------------
NN Имя обработанного файла
----------------------------------------------------------------------
1. TEST_SUB.CPP
----------------------------------------------------------------------
Таблица с результатами измерений ( используется 5 из 416 записей )
----------------------------------------------------------------------
Исх.Поз. Прием.Поз. Общее время(мкс) Кол-во прох. Среднее время(мкс)
----------------------------------------------------------------------
1 : 21 1 : 23 528.00 1 528.00
----------------------------------------------------------------------
1 : 23 1 : 25 1101.26 1 1101.26
----------------------------------------------------------------------
1 : 25 1 : 27 2680.23 1 2680.23
----------------------------------------------------------------------
1 : 27 1 : 29 5456.01 1 5456.01
Вывод: при возрастании значения аргумента процедуры TestLoop() увеличивается и время выполнения процедуры (практически пропорционально).
Выполнение программ из л.Р. 1 Программа на Си Измерение полного времени выполнения программы
Программа:
#include <math.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include "inc\sampler.h"
const int count = 3;
float x,er,ec;
int done;
float erf(float x)
{
const sqrtpi = 1.7724538,
tol = 1.0E-4;
float x2,sum,sum1,term;
int k,i;
x2 = x*x;
sum=x;
term=x;
for(i=0; term<tol*sum; i++) {
sum1=sum;
term=2.0*term*x2/(1.0+2.0*i);
sum=term+sum1;
}
return (2*sum*exp(-x2)/sqrtpi);
}
float erfc( float x )
{
const sqrtpi = 1.7724538;
float terms = 12;
float x2,u,v,sum ;
int i;
x2=x*x;
v=1.0/(2.0*x2);
u=1.0+v*(terms+1.0);
for(i=terms; i>1; i--) {
sum=1.0+i*v/u;
u=sum;
}
return(exp(-x2)/(x*sum*sqrtpi));
}
void main()
{
SAMPLE;
int k;
done=0;
printf("\n");
randomize();
for(k=0; k<count; k++) {
//printf("Arg? ");
//scanf("%f",&x);
x=random(k)/100;
if( x < 0.0 ) { done = 1; }
else
{
if (x==0.0 )
{
er=0.0;
ec=1.0;
}
else
{
if( x<1.5)
{
er=erf(x);
ec=1.0-er;
}
else
{
ec=erfc(x);
er=1.0-ec;
}
}
}
SAMPLE;
}
}
Результат профилирования:
Список обработанных файлов.
----------------------------------------------------------------------
NN Имя обработанного файла
----------------------------------------------------------------------
1. MY20.CPP
----------------------------------------------------------------------
Таблица с результатами измерений ( используется 2 из 416 записей )
----------------------------------------------------------------------
Исх.Поз. Прием.Поз. Общее время(мкс) Кол-во прох. Среднее время(мкс)
----------------------------------------------------------------------
1 : 42 1 : 73 23.63 1 23.63
----------------------------------------------------------------------