r 函数别名内存 space
r function alias memory space
别名函数是否双倍内存space被函数定义占用?
这是另一种别名内存保护程序吗?
> ss=subset
> ss(glmC, donchian==don & in_fundo==F & C_V=='C', epsilon2)
epsilon2
1 1e-07
> ss
function (x, ...)
UseMethod("subset")
<bytecode: 0x0000000018797e70>
<environment: namespace:base>
# alternative aliasing
> ss=function(...) subset(...)
> ss
function(...) subset(...)
> ss(glmC, donchian==don & in_fundo==F & C_V=='C', epsilon2)
epsilon2
1 1e-07
Is this alternative aliasing memory saver?
不,不是。
ss = subset
ss1 = function(...) subset(...)
object.size(ss)
# 832 bytes
object.size(ss1)
# 1280 bytes
我们也可以用pryr::object_size
,这样可能更准确。
library(pryr)
object_size(ss)
# 832 B
object_size(ss1)
# 1.62 kB
然而,差异是如此之小,以至于很难想象它们会产生影响的情况。而且,如果您处于内存紧张的情况下,最节省内存的解决方案可能是根本不使用别名。
别名函数是否双倍内存space被函数定义占用? 这是另一种别名内存保护程序吗?
> ss=subset
> ss(glmC, donchian==don & in_fundo==F & C_V=='C', epsilon2)
epsilon2
1 1e-07
> ss
function (x, ...)
UseMethod("subset")
<bytecode: 0x0000000018797e70>
<environment: namespace:base>
# alternative aliasing
> ss=function(...) subset(...)
> ss
function(...) subset(...)
> ss(glmC, donchian==don & in_fundo==F & C_V=='C', epsilon2)
epsilon2
1 1e-07
Is this alternative aliasing memory saver?
不,不是。
ss = subset
ss1 = function(...) subset(...)
object.size(ss)
# 832 bytes
object.size(ss1)
# 1280 bytes
我们也可以用pryr::object_size
,这样可能更准确。
library(pryr)
object_size(ss)
# 832 B
object_size(ss1)
# 1.62 kB
然而,差异是如此之小,以至于很难想象它们会产生影响的情况。而且,如果您处于内存紧张的情况下,最节省内存的解决方案可能是根本不使用别名。