Профилирование памяти в R - инструменты для обобщения
R имеет некоторые инструменты для профилирования памяти, такие как Rprofmem()
, Rprof()
с опцией "memory.profiling=TRUE"
и tracemem()
. Последнее можно использовать только для объектов, и, следовательно, полезно следить за тем, сколько раз копируется объект, но не дает обзор на основе функции. Rprofmem
должен это сделать, но вывод даже простейшего вызова функции типа lm()
дает более 500 строк журнала. Я попытался выяснить, что на самом деле делает Rprof("somefile.log",memory.profile=T)
, но я не думаю, что действительно получаю его.
Последнее, что я мог найти, было это сообщение Томаса Ламли, сказав это, и я цитирую:
У меня пока нет инструментов для суммирования вывода.
Это было в 2006 году. Есть вероятность, что теперь есть варианты для некоторых хороших сводок, основанных либо на Rprofmem()
, таинственном выходе Rprof()
с memory.profile
установить TRUE или любой другой инструмент?
Ответы
Ответ 1
profvis
выглядит как решение этого вопроса.
Он генерирует интерактивный .html файл (используя htmlwidgets
), показывающий профилирование вашего кода.
введение виньетки является хорошим ориентиром по ее возможностям.
Принимая непосредственно из введения, вы должны использовать его следующим образом:
devtools::install_github("rstudio/profvis")
library(profvis)
# Generate data
times <- 4e5
cols <- 150
data <- as.data.frame(x = matrix(rnorm(times * cols, mean = 5), ncol = cols))
data <- cbind(id = paste0("g", seq_len(times)), data)
profvis({
data1 <- data # Store in another variable for this run
# Get column means
means <- apply(data1[, names(data1) != "id"], 2, mean)
# Subtract mean from each column
for (i in seq_along(means)) {
data1[, names(data1) != "id"][, i] <- data1[, names(data1) != "id"][, i] - means[i]
}
}, height = "400px")
Что дает
![введите описание изображения здесь]()
Ответ 2
Отъезд profr - это похоже на то, что вы ищете.