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

0.0000 1 Void main() {

float x[max];

float y[max];

int n;

float sumx,sumy;

float sumxy, sumx2;

int k;

float resa,resb;

int cycle;

0.0000 1 for(cycle = 0; cycle < cyc_count; cycle++) {

0.0000 20 clrscr();

0.0000 20 seed = 4.0;

0.0000 20 get_data(x,y,n);

0.0000 20 write_data(x,y,n);

//----------------------------------------- Calculative pa

// Accumulating statistics

0.0000 20 sumx = 0; sumy = 0; sumxy = 0; sumx2 = 0;

0.0000 20 for (k=1; k<=n; k++) {

0.0001 200 sumx += x[k];

0.0002 200 sumy += y[k];

0.0001 200 sumxy += x[k] * y[k];

0.0001 200 sumx2 += x[k] * x[k];

}

// Recieving verdict

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

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

0.0000 20 cout << "Approximated with y=ax+b where a = " << resa << "

//------------------------------------------- Calculative

}

0.0000 1 }

Execution Profile

Total time: 1.6264 sec

% of total: 99 %

Можно заметить, что программа на Си ++ выполняется медленнее, чем программа на Паскале. Можно также заметить, что оптимизировать в этих программах практически нечего, значительного выигрыша по времени получить не удастся. Для обеих программ можно предложить следующие незначительные улучшения:

  • исключить вызов функции ClrScr(). Возможно, это приведёт к некоторому засорению экрана ненужной информацией, зато позволит выиграть несколько долей секунды при выполнении;

  • исключить вызов функции Write_Data(). Эта функция выполняет, по большому счёту, отладочные действия и не несёт принципиальной нагрузки;

  • убрать передачу параметра в функцию Random(). Назначение этого параметра до сих пор остаётся загадкой;

  • сократить текст, выводимый на экран при получении результатов вычислений. Достаточно выдать на экран просто два числа, разделённые пробелом.

Тем не менее, после выполнения всех этих улучшений время выполнения программы на Паскале сократилось по версии профилировщика с 0.2409 до 0.1572 секунд (в 1,5 раза). Время работы программы на Си ++ сократилось с 1.6264 до 0.1879 (!) секунд (в 8,5 раз).

5. Выводы

В результате выполнения лабораторной работы были получены начальные навыки работы с программой-профилировщиком «Turbo Profiler», а также проведено профилирование некоторых программ на языках Паскаль и Си ++. В заключительной части работы были предложены и реализованы некоторые улучшения программ первой лабораторной работы, что позволило сократить время их выполнения.

Санкт-Петербургский Государственный Электротехнический Университет

Кафедра МО ЭВМ

Отчёт о выполнении лабораторной работы №__2__

Дисциплина:______Метрология программного обеспечения___________

Название работы:___Измерение характеристик динамической сложности__

___программ с помощью стандартного профилировщика_

___«Turbo profiler»_____________________________

Выполнил:

Сидорцов В. (гр. 1305)

Преподаватель:

Кирьянчиков В.А.

Санкт-Петербург

2005 год

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