Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа №31.doc
Скачиваний:
15
Добавлен:
01.05.2014
Размер:
171.52 Кб
Скачать

Измерение времен выполнения функциональных участков

Расставим метки Sampler’aв программе следующим образом:

  1. #include <math.h>

  2. #include <conio.h>

  3. #include <stdio.h>

  4. #include <stdlib.h>

  5. #include "inc\sampler.h"

  6. const int count = 500;

  7. float x,er,ec;

  8. int done;

  9. float erf(float x)

  10. {

  11. SAMPLE;

  12. const sqrtpi = 1.7724538,

  13. tol = 1.0E-4;

  14. float x2,sum,sum1,term;

  15. int k,i;

  16. x2 = x*x;

  17. sum=x;

  18. term=x;

  19. SAMPLE;

  20. for(i=0; term<tol*sum; i++) {

  21. SAMPLE;

  22. sum1=sum;

  23. term=2.0*term*x2/(1.0+2.0*i);

  24. sum=term+sum1;

  25. SAMPLE;

  26. }

  27. SAMPLE;

  28. return (2*sum*exp(-x2)/sqrtpi);

  29. }

  30. float erfc( float x )

  31. {

  32. SAMPLE;

  33. const sqrtpi = 1.7724538;

  34. float terms = 12;

  35. float x2,u,v,sum ;

  36. int i;

  37. x2=x*x;

  38. SAMPLE;

  39. v=1.0/(2.0*x2);

  40. SAMPLE;

  41. u=1.0+v*(terms+1.0);

  42. SAMPLE;

  43. for(i=terms; i>1; i--) {

  44. SAMPLE;

  45. sum=1.0+i*v/u;

  46. u=sum;

  47. SAMPLE;

  48. }

  49. SAMPLE;

  50. return(exp(-x2)/(x*sum*sqrtpi));

  51. }

  52. void main()

  53. {

  54. SAMPLE;

  55. int k;

  56. done=0;

  57. randomize();

  58. SAMPLE;

  59. for(k=0; k<count; k++) {

  60. SAMPLE;

  61. x=random(k)/100;

  62. SAMPLE;

  63. if( x < 0.0 ) { done = 1; }

  64. else

  65. {

  66. if (x==0.0 )

  67. {

  68. SAMPLE;

  69. er=0.0;

  70. ec=1.0;

  71. SAMPLE;

  72. }

  73. else

  74. {

  75. if( x<1.5)

  76. {

  77. SAMPLE;

  78. er=erf(x);

  79. SAMPLE;

  80. ec=1.0-er;

  81. SAMPLE;

  82. }

  83. else

  84. {

  85. SAMPLE;

  86. ec=erfc(x);

  87. SAMPLE;

  88. er=1.0-ec;

  89. SAMPLE;

  90. }

  91. }

  92. }

  93. SAMPLE;

  94. }

  95. }

Результат профилирования:

Список обработанных файлов.

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

NN Имя обработанного файла

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

1. MMM20.CPP

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

Таблица с результатами измерений ( используется 23 из 416 записей )

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

Исх.Поз. Прием.Поз. Общее время(мкс) Кол-во прох. Среднее время(мкс)

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

1 : 11 1 : 19 108.95 128 0.85

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

1 : 19 1 : 27 109.79 128 0.86

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

1 : 27 1 : 79 156.72 128 1.22

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

1 : 32 1 : 38 88.84 110 0.81

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

1 : 38 1 : 40 93.03 110 0.85

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

1 : 40 1 : 42 99.73 110 0.91

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

1 : 42 1 : 44 100.57 110 0.91

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

1 : 44 1 : 47 56035.97 1210 46.31

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

1 : 47 1 : 49 55043.66 110 500.40 // цикл

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

1 : 49 1 : 87 267.35 110 2.43

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

1 : 54 1 : 58 9.22 1 9.22

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

1 : 58 1 : 60 0.84 1 0.84

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

1 : 60 1 : 62 539.73 500 1.08

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

1 : 62 1 : 68 194.44 262 0.74

1 : 62 1 : 77 98.90 128 0.77

1 : 62 1 : 85 92.19 110 0.84

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

1 : 68 1 : 71 243.89 262 0.93

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

1 : 71 1 : 93 200.31 262 0.76

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

1 : 77 1 : 11 98.90 128 0.77

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

1 : 79 1 : 81 154.00 128 1.20

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

1 : 81 1 : 93 105.60 128 0.83

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

1 : 85 1 : 32 78.78 110 0.72

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

1 : 87 1 : 89 89.68 110 0.82

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

1 : 89 1 : 93 81.30 110 0.74

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

1 : 93 1 : 60 393.91 499 0.79

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

Результаты профилирования показывают, что наибольшее время затрачивается на выполнение цикла, что обусловлено количеством его итераций. В остальном же, программа работает быстро и в оптимизации не нуждается.