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