Создание итогового отчета
Для создания суммарного отчета о профилировании служит команда profsum, которая используется в нескольких формах:
- profsumm – вывод полного отчета о результатах профилирования т-файла. Выводятся данные о времени выполнения для строк, суммарное время выполнения которых составляет 95% от общего времени (если таких строк много, выводятся данные о 10 строках, выполнение которых заняло наибольшее время);
- profsumm(FRACTION) – выводит часть отчета для строк, относительное время выполнения которых составляет FRACTION (от 0.0 до 1.0) от общего времени выполнения файла;
- profsumm(N) – выводится отчет по N строкам с максимальным временем выполнения;
- profsumm(STR) – выводит отчет только по тем строкам, в которых встречается строковое выражение STR;
- profsumm(INFO), profsumm(INFO, FRACTION), profsumm(INFO, N), Hprofsumm(INFO, STR) – выводят итоговый отчет по строкам, заданным массивом INFO.
Пример применения команды profsumm:
>
>
profile erfcore
>
>
z
=
erf(
0
:.
01
:
100
):
>
>
profsumm .profile done
Total time
in
"C:\MATLAB\toolbox\matlab\specfun\erfcore.m"
:
0.16
seconds
94
%
of the total time was spent
on
lines:
[
99
109
108
97
95
94
92
86
71
48
]
47
:
%
0.01s
.
6
*
48
: k
=
find((abs(x)
>
xbreak) & (abs(x)
<
=
4
.)):
49
:
if
-
isempty(k)
70
: del
=
(y
-
z).
*
(y
+
z):
0.01s
,
6
*
71
: result(k)
=
exp(
-
z.
*
z).
*
exp(
-
del).
*
result(k)
72
:
end
85
:
0.01s
.
6
%
86
: y
=
abs(x(k)):
87
: z
=
1
.
/
(y.
*
y):
91
: xnum
=
(xnum
+
p(i)).
*
z:
0.01s
,
6
*
92
: xden
=
(xden
+
q(i)).
*
z:
93
:
end
0.01s
,
6
*
94
: result(k)
=
z.
*
(xnum
+
p(
5
)).
/
(xden
+
q(
5
)):
0.01s
,
6
*
95
: result(k)
=
(
1
/
sqrt(pi)
-
result(k)).
/
y:
96
:
if
jint
-
2
0.01s
,
6
%
97
;
z
=
fix(y
*
16
)
/
16
;
98
: del
-
(y
-
z).
*
(y
+
z):
0.06s
.
38
*
99
: result(k)
=
exp(
-
z.
*
z).
*
exp(
-
del).
*
result(k)
100
: k
-
find(~isfinite(result));
107
:
if
jint
=
=
0
0.01s
,
6
%
108
: k
=
find(x
>
xbreak);
0.01s
,
6
%
109
: result(k)
=
(
0.5
-
result(k))
+
0.5
;
110
: k
=
find(x
<
-
xbreak);