русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Профилирование m-файлов


Дата добавления: 2015-07-23; просмотров: 579; Нарушение авторских прав


Вообще говоря, достижение работоспособности программы — лишь один из этапов ее отладки. Не менее важным вопросом является оптимизация программы по минимуму времени исполнения или по минимуму объема кодов. Современные компьютеры, в которых используется система MATLAB, имеют достаточные резервы памяти, так что размеры программы, как правило, не имеют особого значения. Намного важнее проблема оптимизации программы в части быстродействия.

Оценка времени исполнения отдельных частей программы называется ее профилированием. Для выполнения такой процедуры служит команда profile [ Средства профилирования MATLAB позволяют анализировать только m-файлы функций, но не сценариев. Чтобы получить профиль выполнения сценария, приходится преобразовывать его в функции (как правило, не имеющую входных и выходных параметров), добавляя соответствующий заголовок function. ], имеющая ряд опций:

· profile fun — запуск профилирования для функции fun;

· profile report — вывод отчета о профилировании;

· profile plot — графическое представление результатов профилирования в виде диаграммы Парето;

· profile filename — профилирование файла с заданным именем и путем;

· prof ile report N — вывод отчета по профилированию заданных N строк;

· profile report frac — выводит отчет по профилированию тех строк, относительная доля выполнения которых в общем времени выполнения составляет не менее чем frac (от 0.0 до 1.0);

· profileon — включение профилирования;

· profile off — выключение профилирования;

· profile reset — выключение профилирования с уничтожением всех накопленных данных;

· INFO = profile — возвращает структуру со следующими полями:

o file — полный путь к профилируемому файлу;

o interval — интервалы времени в секундах;

o count — вектор измерений;

o state — состояние профилировщика: 'on' (включен) или 'off (выключен).



Ниже приводится пример на профилирование m-файла ellipj (эллиптическая функция Якоби):

» profile on

» profile ellipj

» ellipj([0:0.01:1].0.5); .

» profile report

Total time in "C:\MATLAB\toolbox\matlab

\specfun\ellipj.m": 0.16 seconds

100% of the total time was spent on lines:

[96 97 86]

85: if -isempty(in)

0.01s. 6% 86: phin(i.in) = 0.5 * ...

87:(asin(c(i+l.in).*sin(rem(phin(i+l.in)

.2*pi))./a(i+l,in))

95: ml = find(m==l):

0.11s. 69% 96: sn(ml) = tanh(u(ml)): 0.04s. 25*97:

cn(ml) = sech(u(ml));

98: dn(ml) = sech(udnl)):

» INFO=profile INFO=file:

'С:\MATLAB\toolboxNmatlab\specfun\el11pj.m'

interval: 0.0100

count: [98x1 double]

state: 'off '

» profile plot

Нетрудно заметить, что при профилировании выводятся номера строк программы, у которых время выполнения превосходит 0.01 с. С использованием этого интервала и оценивается время исполнения программного кода. Последняя команда выводит графическую диаграмму профилирования, показанную на рис. 21.1.

Рис. 21.1.Графическое представление результатов профилирования

При графическом представлении профилирования по горизонтальной оси указываются номера строк, а по вертикальной — время их выполнения. Сначала показываются строки с наибольшим временем выполнения. Таким образом, программист, отлаживающий работу программы, имеет возможность наглядно оценить, где именно находятся критические по быстродействию фрагменты.

 

Создание итогового отчета

Для создания суммарного отчета о профилировании служит команда profsum, которая используется в нескольких формах:

· profsumm — вывод полного отчета о результатах профилирования т-файла. Выводятся данные о времени выполнения для строк, суммарное время выполнения которых составляет 95% от общего времени (если таких строк много, выводятся данные о 10 строках, выполнение которых заняло наибольшее время);

· profsumm(FRACTION) — выводит часть отчета для строк, относительное время выполнения которых составляет FRACTION (от 0.0 до 1.0) от общего времени выполнения файла;

· profsurmi(N) — выводится отчет по N строкам с максимальным временем выполнения;

· profsumm(STR) — выводит отчет только по тем строкам, в которых встречается строковое выражение STR;

· profsumm(INFO), profsurmKINFO, FRACTION), profsumm(INFO, N) HprofsummdNFO, STR) -выводят итоговый отчет по строкам, заданным массивом INFO.

Пример применения команды profsumm:

» profile erfcore

» z = erf(0:.01:100):

» profsumm. profile done

Total time in "C:\MATLAB\toolbox\mat1ab

\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: у = 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);

Построение диаграмм Парето

Команда profile plot использует для построения графическую команду pareto. Диаграмма Парето представляет собой столбцы, расположенные в порядке убывания отображаемых значений. С другими возможностями команды pareto можно ознакомиться, выполнив команду help pareto.

· pareto(Y,NAMES) — строит диаграмму Парето с пометкой столбцов значений вектора Y соответствующими именами, содержащимися в векторе NAMES;

· pareto(Y.X) — строит диаграмму Парето для значений вектора Y в зависимости от значений вектора X;

· pareti(Y) — строит диаграмму Парето для значений вектора Y в зависимости от индексов его элементов;

· [H,AX]=pareto(...) — возвращает вектор дескрипторов графических объектов диаграммы Н и их осей АХ.

Пример построения диаграммы Парето был рассмотрен выше (см. рис. 21.1).

Работа с системой контроля версий

MATLAB поддерживает системы контроля версий кода Visual Source Safe фирмы Microsoft (поступает вместе с Visual Studio), PVCS фирмы Merant (упрощенные версии этой системы бесплатно поступают с продуктами Borland), Clear Case фирмы Rational Software (в особенности на UNIX-Linux версиях MATLAB), RCS и имеет настраиваемый пользовательский интерфейс, так что вместо вышеперечисленных вы можете подключить свою любимую систему. Функция cmopts выводит информацию об установленной системе контроля версий. Свежеустановленная система MATLAB реагирует следующим образом:

» cmopts

ans =

none

Для подключения PVCS или ее варианта вам нужно отредактировать m-файл cmopts.m в папке C:\matlabrl2\toolbox\local Введите комментарий Ubegin customization section и введите на следующей строчке m-файла, если файл конфигурации проекта Proj.cfg:

DefaultConfigFile=

'с:\\pvcs\pvcsproj\projmgrprj\\Proj.cfg'.

Проверим правильность нашей установки:

»cmopts( 'DefaultConflgFile')

DefaultConfigFile =

с:\\pvcs\pvcsproj\projmgrprj\\Proj.cfg

· Командаcheckin(f11ename. 'COMMENTS', Текст комментариев, OPTION1, VALUE1.0PTION2, VALUE2.......) включает ваши файлы в систему контроля версий. Filename — полный путь к файлу или строковый массив ячеек, где каждая ячейка указывает путь к файлам, Текст комментариев — массив символов, в данной версии option может быть только lock, value может быть on (замкнута) или off (позволяет доступ к файлу без checkout).

· Команда checkout(filename, OPTION1, VALUE1.0PTION2. VALUE2.......) извлекает файлы из системы контроля версий. OPTION могут быть lock — аналогично checkin — и ревизия, т. е. указание конкретной версии файла. Команда undocheckout (Filename) — отменяет действие checkout, например замыкание файлов.

 



<== предыдущая лекция | следующая лекция ==>
Просмотр рабочей области | Средства работы со звуком


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 1.278 сек.