13.6 Профилирование
Octave поддерживает профилирование выполнения кода на уровне каждой функции. Если профилирование включено, каждый вызов функции (включая встроенные функции, операторы, функции в oct- и mex-файлах, пользовательские функции в коде Octave и анонимные функции) записывается во время выполнения кода Octave. После этого эти данные могут помочь в анализе поведения кода и, в частности, полезны для поиска «узких мест» в коде, использующих много времени для вычислений, и являются лучшими целями для оптимизации.
Основная команда для профилирования — profile, которая может использоваться для запуска или остановки профилировщика, а также для запроса собранных данных после этого. Данные возвращаются в структуре данных Octave, которую можно затем изучить или обработать другими процедурами или инструментами.
- : profile вкл ¶
- : profile выкл ¶
- : profile возобновить ¶
- : profile очистить ¶
- : S = profile ("статус") ¶
- : T = profile ("информация") ¶
-
Управление встроенным профилировщиком.
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–2022 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/v7.2.0/Profiling.html