Как в Юлии измерить потребление оперативной памяти и время вычислений?

Я разрабатываю различные схемы дискретизации, и чтобы выяснить, какая из них наиболее эффективна, я хотел бы определить максимальное потребление ОЗУ и время, необходимое для выполнения конкретной задачи, такой как решение системы уравнений, перезапись матрицы. или запись данных в файл.

Есть ли какой-то код или что-то для того, что мне нужно? Кстати, я использую Юлию в Ubuntu, но я могу сделать это и в Windows.

Большое спасибо


person Maveryck Andres Garzon Espejo    schedule 14.04.2018    source источник
comment
Просто вычислите количество байтов, которое займет ваш массив. Это довольно хорошая оценка.   -  person Chris Rackauckas    schedule 14.04.2018
comment
Если вы хотите узнать, какая дополнительная память используется во время вычислений, тогда BenchmarkTools.jl должен помочь: github.com/JuliaCI/BenchmarkTools. jl   -  person niczky12    schedule 14.04.2018


Ответы (2)


Мне нравится использовать встроенный @time для такого рода вещей. См. " Измерьте производительность с помощью @time и обратите внимание на распределение памяти ". Пример:

julia> @time myAwesomeFunction(tmp);
  1.293542 seconds (22.08 M allocations: 893.866 MiB, 6.62% gc time)

Это выводит на печать время, количество выделений памяти, размер выделения памяти и процент времени, затраченного на сборку мусора («gc»). Всегда запускайте как минимум дважды - при первом запуске будет преобладать время компиляции!

Также обратите внимание на BenchmarkTools.jl. Это запустит код несколько раз с некоторыми классными трюками с интерполяцией переменных и даст вам более точные оценки времени выполнения / памяти:

julia> using BenchmarkTools, Compat

julia> @btime myAwesomeFunction($tmp);
  1.311 s (22080097 allocations: 893.87 MiB)

(Еще одна моя любимая вещь, связанная с производительностью, - это семейство функций @code_*, например _ 5_.)

person Ahmed Fasih    schedule 20.04.2018

Я думаю, что BenchmarkTools.jl измеряет общее использование памяти, а не пиковое значение. Я не нашел чистого кода Джулии для измерения этого, но, возможно, эта ветка актуально.

person Greg    schedule 10.11.2020