Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабы по МПО / Anton / Otchet_Lab2_Metr.doc
Скачиваний:
24
Добавлен:
01.05.2014
Размер:
167.94 Кб
Скачать

Оптимизированная программа

Тurbo Profiler Version 2.1 Sat Apr 16 23:00:06 2005

Program: D:\ETU\8‘…Њ…‘~1\Њ…’ђЋ‹~1\LAB2\3_PART~1\LABMET.EXE File LABMET.CPP

Time Counts

#include <iostream.h>

#include <conio.h>

#include <stdio.h>

#include <math.h>

const double tol = 1.0E-4;

double sum, upper, lower, erf, twopi;

double fx(double x)

{

0.0565 500 return exp(-x * x);

0.0029 500 }

double simps(double lower,double upper,double tol)

{

int i;

double x,delta_x,even_sum,odd_sum,end_sum, sum1;

int pieces;

double sum;

0.0003 100 pieces = 2;

0.0000 100 delta_x = (upper - lower) / pieces;

0.0000 100 odd_sum = fx(lower + delta_x);

0.0001 100 even_sum = 0.0;

0.0005 100 end_sum = fx(lower) + fx(upper);

0.0004 100 sum = (end_sum + 4.0 * odd_sum) * delta_x / 3.0;

do

{

0.0001 100 pieces = pieces * 2;

0.0003 100 sum1 = sum;

0.0000 100 delta_x = (upper - lower) / pieces;

0.0001 100 even_sum = even_sum + odd_sum;

0.0001 100 odd_sum = 0.0;

0.0000 100 for (i = 1; i <= (pieces / 2); i++)

{

0.0002 200 x = lower + delta_x * (2.0 * i - 1.0);

0.0003 200 odd_sum = odd_sum + fx(x);

}

0.0003 100 sum = (end_sum + 4.0 * odd_sum + 2.0 * even_sum) *

}

0.0002 100 while (abs(sum - sum1) > abs(tol * sum1));

0.0024 100 return sum;

0.0002 100 }

void main ()

{

double res;

int j;

0.0000 1 double pi = 3.14159265359;

0.0000 1 for (j = 1; j <= 100; j++)

{

0.0005 100 twopi = 2.0 / sqrt(pi);

0.0001 100 lower = 0.0;

0.0000 100 upper = 1;

0.0000 100 if (upper >= 0.0)

{

0.0001 100 res = simps(lower,upper,tol);

Turbo Profiler Version 2.1 Sat Apr 16 23:00:06 2005

0.0002 100 erf = twopi * res;

}

}

0.0010 1 }

Профилирование по времени

Turbo Profiler Version 2.1 Sat Apr 16 23:00:59 2005

Program: D:\ETU\8‘…Њ…‘~1\Њ…’ђЋ‹~1\LAB2\3_PART~1\LABMET.EXE

Execution Profile

Total time: 0.0680 sec

% of total: 99 %

Run: 1 of 1

Filter: All

Show: Time

Sort: Frequency

#LABMET#11 0.0565 sec 83% |**********************************************

#LABMET#12 0.0029 sec 4% |**

#LABMET#42 0.0024 sec 3% |*

#LABMET#64 0.0010 sec 1% |

#LABMET#53 0.0005 sec <1% |

#LABMET#25 0.0005 sec <1% |

#LABMET#26 0.0004 sec <1% |

#LABMET#37 0.0003 sec <1% |

#LABMET#39 0.0003 sec <1% |

#LABMET#21 0.0003 sec <1% |

#LABMET#30 0.0003 sec <1% |

#LABMET#43 0.0002 sec <1% |

#LABMET#60 0.0002 sec <1% |

#LABMET#36 0.0002 sec <1% |

#LABMET#41 0.0002 sec <1% |

#LABMET#32 0.0001 sec <1% |

#LABMET#24 0.0001 sec <1% |

#LABMET#59 0.0001 sec <1% |

#LABMET#33 0.0001 sec <1% |

#LABMET#54 0.0001 sec <1% |

#LABMET#29 0.0001 sec <1% |

#LABMET#23 0.0000 sec <1% |

#LABMET#31 0.0000 sec <1% |

#LABMET#57 0.0000 sec <1% |

#LABMET#55 0.0000 sec <1% |

#LABMET#22 0.0000 sec <1% |

#LABMET#34 0.0000 sec <1% |

#LABMET#49 0.0000 sec <1% |

#LABMET#51 0.0000 sec <1% |

Профилирование по частоте

Turbo Profiler Version 2.1 Sat Apr 16 23:01:24 2005

Program: D:\ETU\8‘…Њ…‘~1\Њ…’ђЋ‹~1\LAB2\3_PART~1\LABMET.EXE

Execution Profile

Total time: 0.0680 sec

% of total: 99 %

Run: 1 of 1

Filter: All

Show: Counts

Sort: Frequency

#LABMET#12 500 13% |++++++++++++++++++++++++++++++++++++++++++++++

#LABMET#11 500 13% |++++++++++++++++++++++++++++++++++++++++++++++

#LABMET#36 200 5% |++++++++++++++++++

#LABMET#37 200 5% |++++++++++++++++++

#LABMET#22 100 2% |+++++++++

#LABMET#24 100 2% |+++++++++

#LABMET#25 100 2% |+++++++++

#LABMET#26 100 2% |+++++++++

#LABMET#29 100 2% |+++++++++

#LABMET#30 100 2% |+++++++++

#LABMET#31 100 2% |+++++++++

#LABMET#59 100 2% |+++++++++

#LABMET#33 100 2% |+++++++++

#LABMET#34 100 2% |+++++++++

#LABMET#21 100 2% |+++++++++

#LABMET#23 100 2% |+++++++++

#LABMET#39 100 2% |+++++++++

#LABMET#41 100 2% |+++++++++

#LABMET#42 100 2% |+++++++++

#LABMET#43 100 2% |+++++++++

#LABMET#32 100 2% |+++++++++

#LABMET#60 100 2% |+++++++++

#LABMET#53 100 2% |+++++++++

#LABMET#55 100 2% |+++++++++

#LABMET#54 100 2% |+++++++++

#LABMET#57 100 2% |+++++++++

#LABMET#51 1 <1% |

#LABMET#49 1 <1% |

#LABMET#64 1 <1% |

Профилирование по средним временам на 1 вызов:

Turbo Profiler Version 2.1 Sat Apr 16 23:01:50 2005

Program: D:\ETU\8‘…Њ…‘~1\Њ…’ђЋ‹~1\LAB2\3_PART~1\LABMET.EXE

Execution Profile

Total time: 0.0680 sec

% of total: 99 %

Run: 1 of 1

Filter: All

Show: Time per call

Sort: Frequency

#LABMET#64 0.0010 sec/call |**********************************************

#LABMET#11 0.0001 sec/call |*****

#LABMET#42 0.0000 sec/call |*

#LABMET#12 0.0000 sec/call |

#LABMET#25 0.0000 sec/call |

#LABMET#53 0.0000 sec/call |

#LABMET#26 0.0000 sec/call |

#LABMET#39 0.0000 sec/call |

#LABMET#30 0.0000 sec/call |

#LABMET#60 0.0000 sec/call |

#LABMET#21 0.0000 sec/call |

#LABMET#43 0.0000 sec/call |

#LABMET#37 0.0000 sec/call |

#LABMET#49 0.0000 sec/call |

#LABMET#41 0.0000 sec/call |

#LABMET#34 0.0000 sec/call |

#LABMET#31 0.0000 sec/call |

#LABMET#32 0.0000 sec/call |

#LABMET#29 0.0000 sec/call |

#LABMET#24 0.0000 sec/call |

#LABMET#33 0.0000 sec/call |

#LABMET#51 0.0000 sec/call |

#LABMET#23 0.0000 sec/call |

#LABMET#54 0.0000 sec/call |

#LABMET#55 0.0000 sec/call |

#LABMET#57 0.0000 sec/call |

#LABMET#22 0.0000 sec/call |

#LABMET#59 0.0000 sec/call |

#LABMET#36 0.0000 sec/call |

Вывод: Время работы программы уменьшилось с 0.1977 секунды до 0.0680 секунды (выигрыш по времени составил примерно 65 %), не считая удаления ввода с клавиатуры.

Соседние файлы в папке Anton