Скачиваний:
18
Добавлен:
01.05.2014
Размер:
83.46 Кб
Скачать

4.2. Профилирование программы «Main_p»

Тело программы разбивается на некие функциональные участки с помощью меток SAMPLE. Профилирование такой программы позволит оценить время, затрачиваемое в программе на выполнение каждой из таких секций. Текст тела программы приведён ниже:

BEGIN

for cycle := 1 to cyc_count do begin

SAMPLE(PName,1);

ClrScr;

SAMPLE(PName,2);

seed:=4.0;

SAMPLE(PName,3);

get_data(x,y,n);

SAMPLE(PName,4);

write_data;

SAMPLE(PName,5);

sumx := 0; sumy := 0; sumxy := 0; sumx2 := 0;

for k:=1 to n do begin

sumx := sumx + x[k];

sumy := sumy + y[k];

sumxy := sumxy + x[k] * y[k];

sumx2 := sumx2 + x[k] * x[k];

end;

resa := (sumxy - sumx*sumy/n) / (sumx2 - sumx*sumx/n);

resb := (sumy - resa * sumx) / n;

SAMPLE(PName,6);

writeln('Approximated with y=ax+b where a = ',resa,', b=',resb);

SAMPLE(PName,7);

end;

END.

Результаты профилирования такой программы приведены ниже:

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

Область программы Общее время Кол-во прох. Ср. время

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

Вызов функции очистки экрана 206.19 20 10.31

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

Подготовка к генерации данных 2.15 20 0.11

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

Генерация данных 1554.47 20 77.72

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

Вывод данных на экран 9328.03 20 466.40

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

Расчёт результатов 271.66 20 13.58

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

Вывод результатов на экран 331.51 20 16.58

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

К данной программе применяется оптимизация, описанная в п. 4.1. Результаты оптимизации приведены в п. 3 настоящего отчёта. Исключение некоторых секций программы позволило сократить время выполнения программы с 6652.48 до 2123.90 микросекунд.

Выводы

Основным результатом работы стало профилирование и оптимизация программ лабораторной работы №1. Применение программы «Sampler» позволило сделать следующие выводы:

  • операции вывода на экран в Паскале реализованы эффективнее, нежели объектно-ориентированный вывод через потоки Си++;

  • расчётные операции реализованы в Си++ несколько эффективнее, нежели чем в Паскале;

  • программы на Си++ поддаются оптимизации охотнее, чем программы на Паскале, поскольку выводом на экран можно иногда пренебречь, а вычислительными операциями – нет.

  • высокая точность измерений, связанная с низким процентом накладных расходов на проведение замеров времени.

Соседние файлы в папке Лабораторная работа №31