为了覆盖R中的内存,我应该覆盖一个现有变量

问题描述 投票:1回答:1

对R中的GC不太熟悉,只是想知道如果我覆盖R中的现有变量是否可以节省一些内存。例如,一个大向量加1:

aa <- rnorm(100000)
# method 1: create a new variable
bb <- aa + 1
# method 2: overrite previous variable
aa <- aa + 1

方法1创建了一个新变量,并占用了一些内存。关于方法2,它需要更多的内存吗?

r memory-management
1个回答
0
投票

您可以使用lobstr程序包(取代pryr)来探索R中的内存使用和垃圾回收。here有很多东西,但是简短的答案是,覆盖现有变量所占的比例要少得多比创建新变量要多的内存。由于pryr中不提供的mem_change功能的便利性,我在下面使用lobstr

library(pryr)

aa <- rnorm(100000)

# method 1: create a new variable
mem_change(bb <- aa + 1)
#> 805 kB

# method 2: overrite previous variable
mem_change(aa <- aa + 1)
#> 528 B
© www.soinside.com 2019 - 2024. All rights reserved.