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

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

Последнее, что я смог найти, это это сообщение Томаса Ламли, в котором говорилось об этом, и я Цитировать :

У меня пока нет инструментов для обобщения результатов.

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


person Joris Meys    schedule 03.03.2011    source источник
comment
Уже с нетерпением жду вашего пакета RprofmemSummary :)   -  person Dirk Eddelbuettel    schedule 03.03.2011
comment
@ Дирк, я думаю, удачи, бедняга ... :)   -  person Joris Meys    schedule 03.03.2011
comment
Я бы добавил эту возможность в профр. Надеюсь однажды найти заинтересованного студента. Это может быть хороший проект "лето кода Google", если вы хотите его написать. Буду рад стать со-наставником.   -  person hadley    schedule 05.03.2011
comment
@hadley: В настоящее время у меня нет времени начинать с этого, но если к лету вы не найдете заинтересованного студента, вы можете принять меня в этом испытании. Спасибо за предложение.   -  person Joris Meys    schedule 07.03.2011
comment
Всем привет, я только что прочитал это .. есть ли прогресс с марта 2011 года?   -  person nassimhddd    schedule 17.08.2012
comment
Прогресса не заметил, но и не проверял. Может быть, стоит поднять вопрос, когда я закончу остальные проекты, которые мне еще предстоит сделать ...   -  person Joris Meys    schedule 17.08.2012
comment
из developer.r-project.org/memory-profiling.html Rprof имеет вариант memory.profiling. ... На данный момент это доступно только в Unix.   -  person Andrew Hill    schedule 30.01.2017


Ответы (2)


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")

Который дает

введите здесь описание изображения

person SymbolixAU    schedule 10.05.2016
comment
спасибо приятель, еще не знал об этом. Безусловно, ценный инструмент. - person Joris Meys; 10.05.2016
comment
@JorisMeys - не беспокойтесь, только что нашел сам. Стоит отметить, что он все еще находится в разработке, так что это относительно новый пакет. - person SymbolixAU; 10.05.2016

Ознакомьтесь с profr - это похоже именно то, что вы ищете.

person J. Taylor    schedule 07.03.2011