Подтвердить что ты не робот

Профилирование памяти в R - инструменты для обобщения

R имеет некоторые инструменты для профилирования памяти, такие как Rprofmem(), Rprof() с опцией "memory.profiling=TRUE" и tracemem(). Последнее можно использовать только для объектов, и, следовательно, полезно следить за тем, сколько раз копируется объект, но не дает обзор на основе функции. Rprofmem должен это сделать, но вывод даже простейшего вызова функции типа lm() дает более 500 строк журнала. Я попытался выяснить, что на самом деле делает Rprof("somefile.log",memory.profile=T), но я не думаю, что действительно получаю его.

Последнее, что я мог найти, было это сообщение Томаса Ламли, сказав это, и я цитирую:

У меня пока нет инструментов для суммирования вывода.

Это было в 2006 году. Есть вероятность, что теперь есть варианты для некоторых хороших сводок, основанных либо на Rprofmem(), таинственном выходе Rprof() с memory.profile установить TRUE или любой другой инструмент?

4b9b3361

Ответ 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 - это похоже на то, что вы ищете.