Spec-Zone.ru › Octave 8

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–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/v8.1.0/Profiling.html

Spec-Zone.ru

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