是否可以监视正在使用或已被R用于调用函数的内存量?例如,我有一个任意函数,例如:
smallest.sv <- function(){
A <- matrix(rnorm(1e6), 1e3);
mysvd <- svd(A);
return(tail(mysvd$d, 1));
}
Run Code Online (Sandbox Code Playgroud)
运行该函数只返回一个标量,但是使用了大量的内存来计算函数.现在我需要进行性能基准测试.处理时间很简单:
system.time(x <- smallest.sv())
Run Code Online (Sandbox Code Playgroud)
但是我还想知道这个调用需要多少内存,而不需要修改函数(它应该适用于任意函数).有没有办法做到这一点?
编辑:澄清一下.我最感兴趣的是在函数调用期间使用的内存上限,即需要多少物理内存才能处理函数调用.在许多情况下,这远远低于我认为的分配内存总量.
R有一些内存分析工具,比如 Rprofmem(),Rprof()选项"memory.profiling=TRUE"和tracemem().最后一个只能用于对象,因此可以跟踪复制对象的次数,但不提供基于函数的概述.Rprofmem应该能够做到这一点,但即使是最简单的函数调用的输出也会lm()提供超过500行的日志.我试图找出究竟Rprof("somefile.log",memory.profile=T)做了什么,但我不认为我真的明白了.
我能找到的最后一个是托马斯·拉姆利的这个消息,说道,我引述:
我还没有工具来总结输出.
这是在2006年也有一些不错摘要选择现在任何机会,主要是基于Rprofmem(),神秘的输出Rprof()与memory.profile设置为TRUE或任何其他工具?