Есть ли утечка памяти в пакете data.table в R 3.6.0? - PullRequest
0 голосов
/ 11 мая 2018

в R 3.6.0 (предварительная версия) * только 1001 * У меня утечка памяти в пакете 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]] НЕ, но это делает утечку памяти намного быстрее.

Информация о моем сеансе

> 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   

1 Ответ

0 голосов
/ 11 мая 2018

Ура!Воспроизводимый пример.Мы боролись в течение нескольких недель в этой области.Ваш пример выглядит чрезвычайно полезным.Пожалуйста, присоединяйтесь к нам на GitHub.

Текущий этап (следующий выпуск) - 1.11.4, и здесь есть несколько связанных с этим проблем.Что заставило вас думать, что мы не хотим, чтобы вы подняли вопрос?Точка 3 из шаблона проблемы Я думаю.Надеюсь, теперь я изменил эти моменты, чтобы прояснить ситуацию.Вы - разработчик пакетов, в настоящий момент у вас есть проблемы с еще не выпущенным R 3.6.0 и недавно выпущенным data.table, поэтому он должен быть на GitHub.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...