Проблемы с производительностью с data.table v1.13.0 в повторяющемся цикле - PullRequest
3 голосов
/ 03 августа 2020

Я видел огромное падение производительности операций data.table l oop, возможно, из-за обновления новой версии

library(data.table)
library(microbenchmark)

dt <- data.table('id'=1:20000,
                 'list_col'=sample(c('', '', 'a', 'a:b', 'a:b:c'), 20000, TRUE))
feature <- 'list_col'

microbenchmark(
  long_dt <- dt[, c("id", feature), with = FALSE][
    , feature_names := {
      x <- get(feature)
      stringr::str_split(x, ':')
    }][
      , .(
        feature_names = paste0(feature, "_", unlist(feature_names))
      )
      , by = "id"]
  , times = 10
  , unit = 'ms'
)

data.table 1.12.8, настройки по умолчанию, с использованием 6 потоков:

      min       lq     mean   median       uq      max neval
 122.2447 149.6991 173.3268 183.5777 193.9876 201.7234    10

data.table 1.13.0, настройки по умолчанию, с использованием 6 потоков:

      min      lq     mean   median      uq      max neval
 12820.75 12913.1 12989.59 13007.94 13065.1 13097.85    10

Это может быть связано с новой функцией дросселирования (см .: https://github.com/Rdatatable/data.table/blob/master/NEWS.md )

Кроме того, я пробовал несколько различных комбинаций threads и throttle, но не заметил никаких улучшений

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