R中的内存分析 - 用于总结的工具

32
R有一些内存分析工具,例如Rprofmem()Rprof()(选项为"memory.profiling=TRUE")和tracemem()。最后一个只能用于对象,因此可用于跟踪对象被复制的次数,但不能按函数基础提供概述。Rprofmem应该能够做到这一点,但即使是像lm()这样的最简单的函数调用的输出也会给出超过500行的日志。我试图弄清楚Rprof("somefile.log",memory.profile=T)实际上是做什么的,但我认为我并没有真正理解它。
我最后找到的是Thomas Lumley的这条消息,他说:

我还没有工具来总结输出。

这是在2006年。现在是否有一些漂亮的摘要选项,基于Rprofmem()Rprof()的神秘输出(设置为memory.profile)或其他任何工具?

8
已经期待着您的RprofmemSummary软件包了 :) - Dirk Eddelbuettel
@Dirk 我想那是一个“祝你好运,可怜的家伙...” :) - Joris Meys
我想要向Profr添加这个功能。希望有一天能找到一个感兴趣的学生。如果你想写这个项目,它可能是一个不错的Google Summer of Code项目。我很乐意作为共同导师。 - hadley
@hadley:我目前没有时间开始这个项目,但如果到了夏天你还没有找到感兴趣的学生,你可以向我提出挑战。谢谢你的邀请。 - Joris Meys
大家好,我刚刚读到这篇文章..自2011年3月以来有什么进展吗? - nassimhddd
显示剩余2条评论
2个回答

7

profvis 看起来是这个问题的解决方案。

它使用 htmlwidgets 生成一个交互式的.html文件,展示您代码的分析结果。

介绍性文献 是了解其功能的好指南。

直接从介绍中获取,您可以像这样使用它:

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

这给出了

enter image description here


谢谢,伙计。我还不知道这个工具。肯定是一个有价值的工具。 - Joris Meys
@JorisMeys - 别担心,我也刚刚发现这个东西。值得注意的是,它仍处于开发阶段,所以是一个相对较新的软件包。 - SymbolixAU

2

请查看profr -- 它似乎正是您所需要的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接