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