【问题标题】:Should I overwrite an existing variable in order to save memory in R我是否应该覆盖现有变量以节省 R 中的内存
【发布时间】:2020-07-29 12:39:17
【问题描述】:

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

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

方法一新建了一个变量,占用了一些内存。方法二呢,会不会需要更多内存?

【问题讨论】:

    标签: r memory-management


    【解决方案1】:

    您可以使用lobstr 包(它取代pryr)来探索R 中的内存使用和垃圾收集。还有更多内容here,但简短的回答是覆盖现有变量会占用很多时间比创建新变量更少的额外内存。由于mem_change 功能在lobstr 中不可用,我在下面使用pryr

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-28
      • 1970-01-01
      • 2019-03-17
      • 2017-11-17
      • 2015-12-17
      • 1970-01-01
      相关资源
      最近更新 更多