Создание итогового отчета
Для создания суммарного отчета о профилировании служит команда 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: end85: 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: end0.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 ==00.01s, 6% 108: k = find(x > xbreak); 0.01s, 6% 109: result(k)=(0.5 - result(k)) + 0.5; 110: k = find(x < - xbreak);