Spec-Zone.ru › Julia 1.4

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

Profile.@profileМакрос

@profile

@profile <expression> выполняет ваше выражение, периодически делая снимки стека вызовов. Они добавляются во внутренний буфер снимков стека вызовов.

исходный код

Методы в Profile не экспортируются и должны вызываться, например, как Profile.print().

Profile.clearФункция

clear()

Очищает любые существующие снимки стека вызовов из внутреннего буфера.

исходный код

Profile.printФункция

print([io::IO = stdout,] [data::Vector]; kwargs...)

Выводит результаты профилирования в io (по умолчанию, stdout). Если вы не предоставите вектор data, будет использован внутренний буфер накопленных снимков стека вызовов.

Ключевые аргументы могут быть любой комбинацией:

  • format – Определяет, выводятся ли снимки стека вызовов с (по умолчанию, :tree) или без (:flat) отступов, указывающих структуру дерева.

  • C – Если true, выводятся снимки стека вызовов из кода C и Fortran (обычно они исключаются).

  • combine – Если true (по умолчанию), указатели инструкций объединяются, если соответствуют одной строке кода.

  • maxdepth – Ограничивает глубину выше maxdepth в формате :tree.

  • sortedby – Управляет порядком в формате :flat. :filefuncline (по умолчанию) сортирует по строке исходного кода, :count сортирует по количеству собранных выборок, а :overhead сортирует по количеству выборок, полученных каждой функцией отдельно.

  • noisefloor – Ограничивает кадры, превышающие эвристический порог шума выборки (применяется только к формату :tree). Предлагаемое значение для этого параметра равно 2.0 (по умолчанию 0). Этот параметр скрывает выборки, для которых n <= noisefloor * √N, где n — количество выборок в этой строке, а N — количество выборок для вызываемой функции.

  • mincount – Ограничивает вывод только строками с не менее mincount вхождениями.

  • recur – Управляет обработкой рекурсии в формате :tree. :off (по умолчанию) выводит дерево как обычно. :flat вместо этого сжимает любую рекурсию (по указателю инструкции), показывая приблизительный эффект преобразования любой саморекурсии в итератор. :flatc делает то же самое, но также включает сжатие кадров C (может давать странные результаты вокруг jl_apply).

исходный код
print([io::IO = stdout,] data::Vector, lidict::LineInfoDict; kwargs...)

Выводит результаты профилирования в io. Этот вариант используется для проверки результатов, экспортированных предыдущим вызовом retrieve. Укажите вектор data снимков стека вызовов и словарь lidict с информацией о строках.

См. Profile.print([io], data) для объяснения допустимых ключевых аргументов.

исходный код

Profile.initФункция

init(; n::Integer, delay::Real))

Настройте интервал delay между снимками стека вызовов (в секундах) и количество n указателей инструкций, которые могут быть сохранены. Каждый указатель инструкции соответствует одной строке кода; снимки стека вызовов обычно содержат длинный список указателей инструкций. Значения по умолчанию можно получить, вызвав эту функцию без аргументов, и каждое значение может быть установлено независимо с помощью ключевых слов или в порядке (n, delay).

исходный код

Profile.fetchФункция

fetch() -> data

Возвращает копию буфера профильных снимков стека вызовов. Обратите внимание, что значения в data имеют смысл только на этом компьютере в текущем сеансе, потому что они зависят от точных используемых адресов памяти в JIT-компиляции. Эта функция предназначена в основном для внутреннего использования; retrieve может быть лучшим выбором для большинства пользователей.

исходный код

Profile.retrieveФункция

retrieve() -> data, lidict

"Экспортирует" результаты профилирования в переносимом формате, возвращая набор всех снимков стека вызовов (data) и словарь, который сопоставляет (специфичные для сеанса) указатели инструкций в data с значениями LineInfo, хранящими имя файла, имя функции и номер строки. Эта функция позволяет сохранять результаты профилирования для дальнейшего анализа.

исходный код

Profile.callersФункция

callers(funcname, [data, lidict], [filename=<filename>], [linerange=<start:stop>]) -> Vector{Tuple{count, lineinfo}}

Учитывая предыдущий запуск профилирования, определите, кто вызвал определенную функцию. Предоставление имени файла (и необязательно диапазона номеров строк, в которых определена функция) позволяет вам различить перегруженный метод. Возвращаемое значение — вектор, содержащий количество вызовов и информацию о строках вызвавшей функции. Необязательно можно предоставить снимки стека вызовов data, полученные из retrieve; в противном случае используется текущий внутренний буфер профилирования.

исходный код

Profile.clear_malloc_dataФункция

clear_malloc_data()

Очищает любые сохраненные данные выделения памяти при запуске julia с --track-allocation. Выполните команду(ы), которую(ые) хотите протестировать (чтобы принудительно выполнить JIT-компиляцию), затем вызовите clear_malloc_data. Затем снова выполните свои команды(ы), выйдите из Julia и просмотрите получившиеся *.mem файлы.

исходный код

© 2009–2020 Jeff Bezanson, Stefan Karpinski, Viral B. Shah, and other contributors
Licensed under the MIT License.
https://docs.julialang.org/en/v1.4.2/stdlib/Profile/

Spec-Zone.ru

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