gpt4 book ai didi

r - R 3.6.0中的data.table包是否存在内存泄漏?

转载 作者:行者123 更新时间:2023-12-02 17:23:44 24 4
gpt4 key购买 nike

仅在 R 3.6.0(预发行版)中,我在 data.table 包中存在内存泄漏。这种情况发生在 CRAN 版本和 GH 版本上。

require(data.table)
n <- 2e6
df <- data.frame(a=rnorm(n),
b=factor(rbinom(n,5,prob=0.5),1:5,letters[1:5]),
c=factor(rbinom(n,5,prob=0.5),1:5,letters[1:5]))
dt <- setDT(df)
print(pryr::mem_used())
fff <- function(aref) {
ff <- lapply(1:5, function(i) {
dt2 <- dt[,list(sumA=sum(get(aref))),by=b][,c:=letters[i]]
dt2
})
return(rbindlist(ff))
}
for(i in 1:10) {
f <- fff("a")
rm("f")
gc()
print(pryr::mem_used())
}
gc()
print(pryr::mem_used())

返回(仅 3.6.0)

81.2 MB
81.2 MB
81.2 MB
184 MB
287 MB
390 MB
493 MB
596 MB
699 MB
802 MB

有什么想法吗?

对“get”和“by”的调用似乎都是必要的。 `[,c:=letters[i]] 不是,但它使内存泄漏看起来更快。

我的 session 信息

> sessionInfo()
R Under development (unstable) (2018-05-10 r74708)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1

Matrix products: default

locale:
[1] LC_COLLATE=English_United States.1252
[2] LC_CTYPE=English_United States.1252
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C
[5] LC_TIME=English_United States.1252

attached base packages:
[1] stats graphics grDevices utils datasets methods base

other attached packages:
[1] data.table_1.11.3

loaded via a namespace (and not attached):
[1] compiler_3.6.0 pryr_0.1.4 magrittr_1.5 tools_3.6.0
[5] Rcpp_0.12.16 stringi_1.1.7 codetools_0.2-15 stringr_1.3.0

最佳答案

耶!一个可重现的例子。我们已经在这个领域苦苦挣扎了几个星期。你的例子看起来非常有用。请在 GitHub 上加入我们。

当前的里程碑(下一个版本)是 1.11.4,其中存在几个相关问题。是什么让您认为我们不希望您提出问题? issue template 的要点 3我猜。我希望我现在已经将这些要点更改得更清楚了。您是一名软件包开发人员,目前遇到了尚未发布的 R 3.6.0 和最近发布的 data.table 的问题,因此应该将其发布在 GitHub 上。

enter image description here

关于r - R 3.6.0中的data.table包是否存在内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50298822/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com