R

时间:2018-05-08 07:10:58

标签: r function memory nested

我想知道在R中使用嵌套函数是否会导致内存使用量增加。想象一下,你有一个大数据矩阵X,它已经使用了R可用的大部分内存,并且你有一些嵌套的函数正在传递这个X矩阵。类似的东西:

n=1000;p=100000
X = matrix(rnorm(n*p),nrow=n) # relatively big data matrix

nested.function <-function(B){ #simple function that does nothing
    return(B)
}

my.function <-function(A){
    nested.function(B=A)
}

my.function(A=X)

显然这个例子很愚蠢,因为函数没有做任何事情。但是为了起因或论证,运行my.function需要多少内存?

它至少是用于存储X的内存的3倍吗? X在全局环境中作为X存储一次,然后在my.function中作为A存储,还在嵌套函数中作为B存储?

起初我以为它只会被存储一次,然后函数会指向X,但如果A / B在函数内被更改,那么它们需要是它们自己的元素..

PS:当我只使用一个函数时,问题也是相关的(我认为):如果你在调用foo(X)时一个对象X被复制,那么如果你的X已经使用了几乎就会被杀死所有可用的内存。

谢谢!

0 个答案:

没有答案