- •Задание
- •Ознакомиться с документацией на TurboProfiler и выполнить для программ prost0.C и prost0_p.Pas следующее задание:
- •Реализация
- •На Паскале
- •Профилирование программы Prost0 test_cyc.Cpp
- •Профилирование программы Prost0 test_sub.Cpp
- •Оптимизированная программа
- •На Паскале
- •Оптимизированная программа
На Паскале
Turbo Profiler Version 2.1 Sat Apr 16 21:28:36 2005
Program: D:\ETU\8‘…Њ…‘~1\Њ…’ђЋ‹~1\LAB2\1_PART~2\PROST0_P.EXE File PROST0_P.PAS
Time Counts
program prost;
{ Џа®Ја ¬¬ ЈҐҐа жЁЁ Їа®бвле зЁбҐ« ЇаЁ Ї®¬®йЁ «Ј®аЁв¬ ќўЄ«Ё¤ }
const maxprime=1000;
type
intarr=array[0..maxprime] of integer;
var
primes: intarr;
j,lastprime, curprime: integer;
0.0014 1 begin
0.0000 1 primes[0] := 2;
0.0000 1 primes[1] := 3;
0.0000 1 lastprime := 1;
0.0000 1 curprime := 3;
0.0001 1 writeln('prime0 = ', primes[0]);
0.0000 1 writeln('prime1 = ', primes[1]);
0.0008 499 while(curprime < MAXPRIME) do
begin
0.0567 498 for j := 0 to lastprime do
0.4351 15120 if((curprime mod primes[j]) = 0)
then begin
0.0015 333 curprime := curprime +2;
0.0014 333 break;
0.5972 14787 end;
0.0561 498 if((j+1) <= lastprime) then continue;
0.0001 166 lastprime:= lastprime+1;
0.0279 166 writeln('prime ', lastprime,'=', curprime);
0.0006 166 primes[lastprime] := curprime;
0.0005 166 curprime := curprime +2;
0.0001 166 end
0.0010 1 end.
Профилирование по времени:
Turbo Profiler Version 2.1 Sat Apr 16 21:28:00 2005
Program: D:\ETU\8‘…Њ…‘~1\Њ…’ђЋ‹~1\LAB2\1_PART~2\PROST0_P.EXE
Execution Profile
Total time: 1.1815 sec
% of total: 100%
Run: 1 of 1
Filter: All
Show: Time
Sort: Frequency
PROST.24 0.5972 sec 50% |**********************************************
PROST.20 0.4351 sec 36% |*********************************
PROST.19 0.0567 sec 4% |****
PROST.25 0.0561 sec 4% |****
PROST.27 0.0279 sec 2% |**
PROST.22 0.0015 sec <1% |
PROST.9 0.0014 sec <1% |
PROST.23 0.0014 sec <1% |
PROST.31 0.0010 sec <1% |
PROST.17 0.0008 sec <1% |
PROST.28 0.0006 sec <1% |
PROST.29 0.0005 sec <1% |
PROST.26 0.0001 sec <1% |
PROST.15 0.0001 sec <1% |
PROST.30 0.0001 sec <1% |
PROST.16 0.0000 sec <1% |
PROST.13 0.0000 sec <1% |
PROST.12 0.0000 sec <1% |
PROST.10 0.0000 sec <1% |
PROST.11 0.0000 sec <1% |
Профилирование по частоте:
Turbo Profiler Version 2.1 Sat Apr 16 21:29:14 2005
Program: D:\ETU\8‘…Њ…‘~1\Њ…’ђЋ‹~1\LAB2\1_PART~2\PROST0_P.EXE
Execution Profile
Total time: 1.1815 sec
% of total: 100%
Run: 1 of 1
Filter: All
Show: Counts
Sort: Frequency
PROST.20 15120 45% |++++++++++++++++++++++++++++++++++++++++++++++
PROST.24 14787 44% |++++++++++++++++++++++++++++++++++++++++++++
PROST.17 499 1% |+
PROST.25 498 1% |+
PROST.19 498 1% |+
PROST.23 333 1% |+
PROST.22 333 1% |+
PROST.28 166 <1% |
PROST.26 166 <1% |
PROST.29 166 <1% |
PROST.30 166 <1% |
PROST.27 166 <1% |
PROST.9 1 <1% |
PROST.16 1 <1% |
PROST.15 1 <1% |
PROST.13 1 <1% |
PROST.12 1 <1% |
PROST.10 1 <1% |
PROST.11 1 <1% |
PROST.31 1 <1% |
Профилирование по средним временам на 1 вызов:
Turbo Profiler Version 2.1 Sat Apr 16 21:29:46 2005
Program: D:\ETU\8‘…Њ…‘~1\Њ…’ђЋ‹~1\LAB2\1_PART~2\PROST0_P.EXE
Execution Profile
Total time: 1.1815 sec
% of total: 100%
Run: 1 of 1
Filter: All
Show: Time per call
Sort: Frequency
PROST.9 0.0014 sec/call |**********************************************
PROST.31 0.0010 sec/call |********************************
PROST.27 0.0001 sec/call |*****
PROST.15 0.0001 sec/call |****
PROST.19 0.0001 sec/call |***
PROST.25 0.0001 sec/call |***
PROST.16 0.0000 sec/call |**
PROST.24 0.0000 sec/call |*
PROST.20 0.0000 sec/call |
PROST.22 0.0000 sec/call |
PROST.23 0.0000 sec/call |
PROST.29 0.0000 sec/call |
PROST.28 0.0000 sec/call |
PROST.17 0.0000 sec/call |
PROST.10 0.0000 sec/call |
PROST.12 0.0000 sec/call |
PROST.26 0.0000 sec/call |
PROST.30 0.0000 sec/call |
PROST.13 0.0000 sec/call |
PROST.11 0.0000 sec/call |
Вывод: Основное время выполнения программы тратится на две трудоемкие операции: вывод значений на экран (writeln) и на вычисление условия .
Оптимизация: Избавиться от вывода на экран или уменьшить количество выводимых символов на экран.