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

2.3.1 Профилирование программы linefit1.C

Turbo Profiler Version 2.1 Sun Apr 03 14:37:10 2005

Program: D:\_MYDOCS\LETI\8SEM\МЕТРОЛ~1\ЛАБЫ\ЛАБ2\C\LINEFIT1.EXE File D:\_MYDOCS\LETI\8SEM\МЕТРОЛ~1\

Time Counts

#include <stdlib.h>

#define size 20

0.0000 80 void linfit1(double x[size],double y[size], double* y_calc, double* a, double* b,int n

{

int i;

double sum_x,sum_y,sum_xy,sum_x2,sum_y2,xi,yi,sxy,sxx,syy;

0.0000 80 sum_x = 0;

0.0000 80 sum_y = 0;

0.0000 80 sum_xy = 0;

0.0000 80 sum_x2 = 0;

0.0000 80 sum_y2 = 0;

0.0000 80 for (i=0; i<n; i++)

{

0.0015 1600 xi=x[i];

0.0562 1600 yi=y[i];

0.0016 1600 sum_x += xi;

0.0566 1600 sum_y += yi;

0.0136 1600 sum_xy += xi*yi;

0.0570 1600 sum_x2 += xi*xi;

0.0567 1600 sum_y2 += yi*yi;

}

0.0000 80 sxx = sum_x2-sum_x*sum_x/n;

0.0000 80 sxy = sum_xy-sum_x*sum_y/n;

0.0002 80 syy = sum_y2-sum_y*sum_y/n;

0.0000 80 *b=sxy/sxx;

0.0000 80 *a=((sum_x2*sum_y-sum_x*sum_xy)/n)/sxx;

0.0000 80 for (i=0;i<n;i++)

0.0566 1600 *(y_calc+i) = *a + *b * x[i];

0.0000 80 }

0.0000 1 void main(void)

{

int i,k;

double a,b,x[size],y[size],y_calc[size];

0.0000 1 for (k=0;k<80;k++)

{

0.0656 80 randomize();

0.0079 80 printf("Input Data: \n");

0.0000 80 for (i=0;i<size;i++)

{

0.0563 1600 x[i] = 10+i*10;

0.1113 1600 y[i] = 10+i*10 + random(20) - 10;

0.5569 1600 printf("x[%d] = %3.1f y[%d] = %3.1f\n",i,x[i],i,y[i]);

}

0.0001 80 linfit1(x,y,&y_calc[0],&a,&b,size);

0.0084 80 printf("a: %3.1f, b: %3.1f\n",a,b);

0.0000 80 for (i=0;i<size;i++)

0.3810 1600 printf("y_calc = %3.1f\n",y_calc[i]);

}

0.0000 1 }

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

Turbo Profiler Version 2.1 Sun Apr 03 14:37:39 2005

Program: D:\_MYDOCS\LETI\8SEM\МЕТРОЛ~1\ЛАБЫ\ЛАБ2\C\LINEFIT1.EXE

Execution Profile

Total time: 1.4904 sec

% of total: 99 %

Run: 1 of 1

Filter: All

Show: Time and counts

Sort: Frequency Pass count: +++ Time: ***

#LINEFIT1#42 1600 7% |++++++++++++

0.5569 sec 37% |******************************************************************

#LINEFIT1#47 1600 7% |++++++++++++

0.3810 sec 25% |*********************************************

#LINEFIT1#41 1600 7% |++++++++++++

0.1113 sec 7% |*************

#LINEFIT1#36 80 <1% |

0.0656 sec 4% |*******

#LINEFIT1#19 1600 7% |++++++++++++

0.0570 sec 3% |******

#LINEFIT1#20 1600 7% |++++++++++++

0.0567 sec 3% |******

#LINEFIT1#17 1600 7% |++++++++++++

0.0566 sec 3% |******

#LINEFIT1#28 1600 7% |++++++++++++

0.0566 sec 3% |******

#LINEFIT1#40 1600 7% |++++++++++++

0.0563 sec 3% |******

#LINEFIT1#15 1600 7% |++++++++++++

0.0562 sec 3% |******

#LINEFIT1#18 1600 7% |++++++++++++

0.0136 sec <1% |*

#LINEFIT1#45 80 <1% |

0.0084 sec <1% |*

#LINEFIT1#37 80 <1% |

0.0079 sec <1% |

#LINEFIT1#16 1600 7% |++++++++++++

0.0016 sec <1% |

#LINEFIT1#14 1600 7% |++++++++++++

0.0015 sec <1% |

#LINEFIT1#24 80 <1% |

0.0002 sec <1% |

#LINEFIT1#44 80 <1% |

0.0001 sec <1% |

_linfit1 80 <1% |

0.0000 sec <1% |

#LINEFIT1#7 80 <1% |

0.0000 sec <1% |

#LINEFIT1#27 80 <1% |

0.0000 sec <1% |

#LINEFIT1#25 80 <1% |

0.0000 sec <1% |

#LINEFIT1#38 80 <1% |

0.0000 sec <1% |

#LINEFIT1#26 80 <1% |

0.0000 sec <1% |

#LINEFIT1#29 80 <1% |

0.0000 sec <1% |

#LINEFIT1#46 80 <1% |

0.0000 sec <1% |

#LINEFIT1#23 80 <1% |

Turbo Profiler Version 2.1 Sun Apr 03 14:37:39 2005

0.0000 sec <1% |

#LINEFIT1#8 80 <1% |

0.0000 sec <1% |

#LINEFIT1#22 80 <1% |

0.0000 sec <1% |

#LINEFIT1#12 80 <1% |

0.0000 sec <1% |

#LINEFIT1#10 80 <1% |

0.0000 sec <1% |

#LINEFIT1#11 80 <1% |

0.0000 sec <1% |

#LINEFIT1#9 80 <1% |

0.0000 sec <1% |

_main 1 <1% |

0.0000 sec <1% |

#LINEFIT1#34 1 <1% |

0.0000 sec <1% |

#LINEFIT1#49 1 <1% |

0.0000 sec <1% |

Вывод: Попробуем оптимизировать программу за счет переноса тела функции «Linefit1» в тело «main» и удалим вывод входных значений на экран.

Оптимизированная программа LINEFIT1.С:

Turbo Profiler Version 2.1 Sun Apr 03 14:38:35 2005

Program: D:\_MYDOCS\LETI\8SEM\МЕТРОЛ~1\ЛАБЫ\ЛАБ2\C\LINEFIT0.EXE File D:\_MYDOCS\LETI\8SEM\МЕТРОЛ~1\

Time Counts

#include <stdlib.h>

#define size 20

0.0000 1 void main(void)

{

int i,k;

double a,b,x[size],y[size],y_calc[size];

double sum_x,sum_y,sum_xy,sum_x2,sum_y2,xi,yi,sxy,sxx,syy;

0.0000 1 for (k=0;k<80;k++)

{

0.0758 80 randomize();

0.0080 80 printf("Input Data: \n");

0.0549 80 for (i=0;i<size;i++)

{

0.1113 1600 x[i] = 10+i*10;

0.0564 1600 y[i] = 10+i*10 + random(20) - 10;

}

0.0000 80 for (i=0; i<size; i++)

{

0.0567 1600 xi=x[i];

0.1112 1600 yi=y[i];

0.0568 1600 sum_x += xi;

0.0562 1600 sum_y += yi;

0.1663 1600 sum_xy += xi*yi;

0.0563 1600 sum_x2 += xi*xi;

0.0566 1600 sum_y2 += yi*yi;

}

0.0000 80 sxx = sum_x2-sum_x*sum_x/size;

0.0550 80 sxy = sum_xy-sum_x*sum_y/size;

0.0000 80 syy = sum_y2-sum_y*sum_y/size;

0.0001 80 b=sxy/sxx;

0.0000 80 a=((sum_x2*sum_y-sum_x*sum_xy)/size)/sxx;

0.0000 80 for (i=0;i<size;i++)

0.0013 1600 y_calc[i] = a + b * x[i];

0.0087 80 printf("a: %3.1f, b: %3.1f\n",a,b);

0.0000 80 for (i=0;i<size;i++)

0.3290 1600 printf("y_calc = %3.1f\n",y_calc[i]);

}

0.0000 1 }

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

Turbo Profiler Version 2.1 Sun Apr 03 14:38:58 2005

Program: D:\_MYDOCS\LETI\8SEM\оаЖЙДп~1\пЗь¢\пЗь2\C\LINEFIT0.EXE

Execution Profile

Total time: 1.2649 sec

% of total: 99 %

Run: 1 of 1

Filter: All

Show: Time and counts

Sort: Frequency Pass count: +++ Time: ***

#LINEFIT0#40 1600 8% |++++++++++++++++++++

0.3290 sec 26% |******************************************************************

#LINEFIT0#26 1600 8% |++++++++++++++++++++

0.1663 sec 13% |*********************************

#LINEFIT0#16 1600 8% |++++++++++++++++++++

0.1113 sec 8% |**********************

#LINEFIT0#23 1600 8% |++++++++++++++++++++

0.1112 sec 8% |**********************

#LINEFIT0#12 80 <1% |+

0.0758 sec 6% |***************

#LINEFIT0#24 1600 8% |++++++++++++++++++++

0.0568 sec 4% |***********

#LINEFIT0#22 1600 8% |++++++++++++++++++++

0.0567 sec 4% |***********

#LINEFIT0#28 1600 8% |++++++++++++++++++++

0.0566 sec 4% |***********

#LINEFIT0#17 1600 8% |++++++++++++++++++++

0.0564 sec 4% |***********

#LINEFIT0#27 1600 8% |++++++++++++++++++++

0.0563 sec 4% |***********

#LINEFIT0#25 1600 8% |++++++++++++++++++++

0.0562 sec 4% |***********

#LINEFIT0#31 80 <1% |+

0.0550 sec 4% |***********

#LINEFIT0#14 80 <1% |+

0.0549 sec 4% |***********

#LINEFIT0#38 80 <1% |+

0.0087 sec <1% |*

#LINEFIT0#13 80 <1% |+

0.0080 sec <1% |*

#LINEFIT0#36 1600 8% |++++++++++++++++++++

0.0013 sec <1% |

#LINEFIT0#33 80 <1% |+

0.0001 sec <1% |

#LINEFIT0#20 80 <1% |+

0.0000 sec <1% |

#LINEFIT0#32 80 <1% |+

0.0000 sec <1% |

#LINEFIT0#35 80 <1% |+

0.0000 sec <1% |

#LINEFIT0#34 80 <1% |+

0.0000 sec <1% |

#LINEFIT0#30 80 <1% |+

0.0000 sec <1% |

#LINEFIT0#39 80 <1% |+

0.0000 sec <1% |

#LINEFIT0#10 1 <1% |

0.0000 sec <1% |

_main 1 <1% |

0.0000 sec <1% |

#LINEFIT0#42 1 <1% |

Turbo Profiler Version 2.1 Sun Apr 03 14:38:58 2005

0.0000 sec <1% |

Вывод: Время работы программы уменьшилось с 1.4904 секунды до 1.2649 секунды (выигрыш по времени составил примерно 15 %).

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