Spec-Zone.ru › Octave 9

13.6 Профилирование

Octave поддерживает профилирование выполнения кода на уровне отдельных функций. Если профилирование включено, при выполнении кода Octave записывается каждый вызов функции (включая встроенные функции, операторы, функции из oct- и mex-файлов, функции, определённые пользователем в коде 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–2026 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.4.0/Profiling.html

Spec-Zone.ru

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