Профилирование
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.0.4/stdlib/Profile/