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或任何其他工具,现在有可能选择一些不错的摘要吗?
答案 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")
哪个给出了
答案 1 :(得分:2)
查看 profr - 这看起来就像您正在寻找的。 p>