Spec-Zone.ru › Julia 0.5

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

@profile()

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

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

clear()

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

print([io::IO = STDOUT, ][data::Vector]; format = :tree, C = false, combine = true, maxdepth = typemax(Int), sortedby = :filefuncline)

Печатает результаты профилирования в io (по умолчанию, STDOUT). Если вы не предоставите вектор data, будет использован внутренний буфер накопленных снимков стека вызовов. format может быть :tree или :flat. Если C==true, показываются снимки стека вызовов из C и Fortran кода. combine==true объединяет указатели инструкций, соответствующие одной и той же строке кода. maxdepth можно использовать для ограничения глубины печати в формате :tree, а sortedby можно использовать для управления порядком в формате :flat (:filefuncline сортирует по строке исходного кода, тогда как :count сортирует по количеству собранных выборок).

print([io::IO = STDOUT, ]data::Vector, lidict::Dict; kwargs)

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

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

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

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

fetch() → data

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

retrieve() → data, lidict

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

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

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

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.5/stdlib/profile/

Spec-Zone.ru

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