Spec-Zone.ru › Julia 1.2

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

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 сортирует по количеству собранных образцов.

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

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

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

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

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

исходный код

Profile.initФункция

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

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

исходный код

Profile.fetchФункция

fetch() -> data

Возвращает ссылку на внутренний буфер отслеживаний стека вызовов. Обратите внимание, что последующие операции, такие как clear, могут повлиять на 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–2019 Jeff Bezanson, Stefan Karpinski, Viral B. Shah, and other contributors
Licensed under the MIT License.
https://docs.julialang.org/en/v1.2.0/stdlib/Profile/

Spec-Zone.ru

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