Профилирование
Base.Profile.@profileМакрос
@profile
@profile <expression> выполняет ваше выражение с периодическим выводом трассировок стека. Они добавляются во внутренний буфер трассировок стека.
Методы в Base.Profile не экспортированы и должны вызываться, например, как Profile.print().
Base.Profile.clearФункция
clear()
Очистить все существующие трассировки стека из внутреннего буфера.
исходный код
Base.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) для объяснения допустимых ключевых аргументов.
Base.Profile.initФункция
init(; n::Integer, delay::Float64)
Настройка delay между трассировками стека (в секундах) и количеством n указателей инструкций, которые могут быть сохранены. Каждый указатель инструкции соответствует одной строке кода; трассировки стека обычно представляют собой длинный список указателей инструкций. Значения по умолчанию можно получить, вызвав эту функцию без аргументов, и каждое значение можно задать независимо с помощью ключевых слов или в порядке (n, delay).
Base.Profile.fetchФункция
fetch() -> data
Возвращает ссылку на внутренний буфер трассировок стека. Обратите внимание, что последующие операции, такие как clear, могут повлиять на data , если вы не создадите копию сначала. Обратите внимание, что значения в data имеют смысл только на этой машине в текущем сеансе, так как они зависят от точных адресов памяти, используемых при JIT-компиляции. Эта функция предназначена в основном для внутреннего использования; retrieve может быть лучшим выбором для большинства пользователей.
Base.Profile.retrieveФункция
retrieve() -> data, lidict
«Экспортирует» результаты профилирования в переносимом формате, возвращая набор всех трассировок стека (data) и словарь, который сопоставляет (специфичные для сеанса) указатели инструкций в data с LineInfo значениями, которые хранят имя файла, имя функции и номер строки. Эта функция позволяет сохранять результаты профилирования для дальнейшего анализа.
Base.Profile.callersФункция
callers(funcname, [data, lidict], [filename=<filename>], [linerange=<start:stop>]) -> Vector{Tuple{count, lineinfo}}
Учитывая предыдущий запуск профилирования, определить, кто вызвал конкретную функцию. Предоставление имени файла (и, необязательно, диапазона номеров строк, в которых определена функция) позволяет разобрать перегруженную функцию. Возвращаемое значение представляет собой вектор, содержащий количество вызовов и информацию о строке вызывающей функции. Можно дополнительно предоставить трассировку стека data , полученную из retrieve; в противном случае используется текущий внутренний буфер профилирования.
Base.Profile.clear_malloc_dataФункция
clear_malloc_data()
Очищает любые сохранённые данные о распределении памяти при запуске julia с --track-allocation. Выполните команды, которые вы хотите протестировать (чтобы принудительно выполнить JIT-компиляцию), затем вызовите clear_malloc_data. Затем выполните ваши команды снова, выйдите из Julia и просмотрите полученные файлы *.mem.
© 2009–2016 Jeff Bezanson, Stefan Karpinski, Viral B. Shah, and other contributors
Licensed under the MIT License.
https://docs.julialang.org/en/release-0.6/stdlib/profile/