13.6 Профилирование ¶
Octave поддерживает профилирование выполнения кода на уровне функций. Если профилирование включено, каждый вызов функции (встроенные функции, операторы, функции в файлах oct- и mex-файлов, пользовательские функции в коде Octave и анонимные функции) записывается во время выполнения кода Octave. После этого эти данные могут помочь в анализе поведения кода, и особенно полезны для поиска «узких мест» в коде, которые потребляют много времени вычислений и являются лучшими целями для оптимизации.
Основная команда для профилирования — profile, которая может использоваться для запуска или остановки профилировщика, а также для запроса собранных данных впоследствии. Данные возвращаются в структуре данных Octave, которую затем можно просмотреть или обработать другими процедурами или инструментами.
-
: profile
on¶ -
: profile
off¶ -
: profile
resume¶ -
: profile
clear¶ -
:
S =profile("status")¶ -
:
T =profile("info")¶ -
Управление встроенным профилировщиком.
profile on-
Запустить профилировщик. Любые ранее собранные данные очищаются.
profile off-
Остановить профилирование. Собранные данные можно позже извлечь и просмотреть с помощью
T = profile ("info"). profile clear-
Очистить все собранные данные профилировщика.
profile resume-
Возобновить профилирование без очистки старых данных. Все новые статистические данные добавляются к существующим.
S = profile ("status")-
Возвращает структуру с информацией о текущем состоянии профилировщика. В данный момент единственное поле —
ProfilerStatus, которое может быть либо"on", либо"off". T = profile ("info")Возвращает собранную статистику профилирования в структуре T. Плоский профиль возвращается в поле
FunctionTable, которое представляет собой массив структур, каждая запись соответствует функции, которая была вызвана и для которой есть статистические данные профилирования. Кроме того, полеHierarchicalсодержит иерархическое дерево вызовов. Каждый узел имеет индекс вFunctionTable, определяющий функцию, которой он соответствует, а также поля данных для количества вызовов и времени, потраченного на этом уровне в дереве вызовов.
См. также: profshow, profexplore.
Легкий способ получить обзор собранных данных — profshow. Эта функция принимает данные профилировщика, возвращенные profile, в качестве входных данных и выводит плоский профиль, например:
Function Attr Time (s) Calls ---------------------------------------- >myfib R 2.195 13529 binary <= 0.061 13529 binary - 0.050 13528 binary + 0.026 6764
Это показывает, что большая часть времени выполнения была потрачена на выполнение функции «myfib», а незначительная часть — на вычисление указанных бинарных операторов. Кроме того, показано, сколько раз вызывалась функция, а профилировщик также записывает, что она рекурсивна.
-
: profshow
(data)¶ -
: profshow
(data, n)¶ -
: profshow
()¶ -
: profshow
(n)¶ -
Вывод результатов профилирования по каждой функции.
Выводит данные профилировщика (время выполнения, количество вызовов) для наиболее важных n функций. Результаты сортируются по убыванию затраченного времени в каждой функции. Если n не указано, оно по умолчанию равно 20.
Ввод data — это структура, возвращенная
profile ("info"). Если не указано,profshowбудет использовать текущий набор данных профилирования.Столбец атрибутов отображает «R» для рекурсивных функций и пуст для всех других типов функций.
См. также: profexplore, profile.
-
: profexport
(dir)¶ -
: profexport
(dir, data)¶ -
: profexport
(dir, name)¶ -
: profexport
(dir, name, data)¶ -
Экспорт данных профилирования в HTML.
Экспортирует данные профилирования в data в виде ряда HTML-файлов в папке dir. Первым файлом будет data/index.html.
Если указано name, это должна быть строка, содержащая «имя» экспортируемого профиля. Это имя включено в HTML.
Ввод data — это структура, возвращенная
profile ("info"). Если не указано,profexportбудет использовать текущий набор данных профилирования.См. также: profshow, profexplore, profile.
-
: profexplore
()¶ -
: profexplore
(data)¶ -
Взаимодействующий просмотр иерархического вывода профилировщика.
Предполагая, что data — это структура с данными профилирования, возвращенными
profile (, эта команда открывает интерактивный пригласительный знак, который можно использовать для просмотра дерева вызовов. Введите help, чтобы получить список возможных команд. Если data не указано,"info")profile ("info")вызывается и используется вместо него.
© 1996–2023 The Octave Project Developers
Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions.
https://docs.octave.org/v9.2.0/Profiling.html