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

时间:2011-03-03 18:32:47

标签: r memory-profiling

R有一些用于内存分析的工具,例如Rprofmem()Rprof(),其中包含选项"memory.profiling=TRUE"tracemem()。最后一个只能用于对象,因此可以跟踪复制对象的次数,但不提供基于函数的概述。 Rprofmem应该能够做到这一点,但即使是最简单的函数调用(如lm())的输出也会提供超过500行的日志。我试图找出Rprof("somefile.log",memory.profile=T)实际上做了什么,但我不认为我真的得到它。

我能找到的最后一个是this message of Thomas Lumley,说出来,我引用:

  

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

这是在2006年。根据Rprofmem()Rprof() memory.profile的神秘输出设置为TRUE或任何其他工具,现在有可能选择一些不错的摘要吗?

2 个答案:

答案 0 :(得分:6)

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

它生成一个交互式 .html 文件(使用htmlwidgets),显示代码的分析。

introduction vignette是其能力的良好指南。

直接从介绍中获取,你会像这样使用它:

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

答案 1 :(得分:2)

查看 profr - 这看起来就像您正在寻找的。