2011-03-03 56 views
27

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

最后我能找到的this message of Thomas Lumley,说,我引用:

我还没有工具来概括输出。

这是在2006年也有一些不错摘要选择现在任何机会,主要是基于Rprofmem()Rprof()memory.profile神秘的输出设置为TRUE或任何其他工具?

+8

已经期待着您的RprofmemSummary包:) – 2011-03-03 18:38:31

+0

@Dirk我认为这是一个“祝你好运,可怜的小伙子......”:) – 2011-03-03 18:43:26

+0

我想把这个能力添加到profr。希望有一天能找到一个感兴趣的学生。如果你想把它写出来,它可能是一个很好的代码项目的谷歌夏季。我很乐意成为合作导师。 – hadley 2011-03-05 16:16:12

回答

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

+0

thx朋友,还不知道这个。值得肯定的宝贵工具。 – 2016-05-10 08:12:18

+0

@JorisMeys - 不用担心,只是自己找到了它。值得注意的是它仍在开发中,所以它是一个相对较新的软件包。 – SymbolixAU 2016-05-10 08:17:59

2

结帐profr - 它看起来正是你在找什么。

+0

哎呀,nm - 刚才看到由上面的profr作者发表的评论... – 2011-03-07 03:14:27