Spec-Zone.ru › Octave 6

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 ("info"), эта команда открывает интерактивный запрос, который можно использовать для исследования дерева вызовов. Введите help, чтобы получить список возможных команд. Если data опущено, вызывается profile ("info") и используется вместо него.

См. также: profile, profshow.

© 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/v6.4.0/Profiling.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API