В R есть ли способ, которым я могу сравнить и приблизить время, необходимое для сохранения объекта размером 7 ГБ с помощью функции saveRDS? - PullRequest
0 голосов
/ 04 июня 2018

В R у меня есть список объектов размером 7 ГБ, который мне нужно сохранить.Есть ли способ, которым я могу сравнить и приблизить время, необходимое для сохранения 7 ГБ объекта, используя saveRDS() с его настройками по умолчанию?(например, сжатие файлов) Я попытался приблизить его, но не уверен, как это сделать.Я на компьютере с 16 ядрами (не уверен, если это имеет значение) и 30 ГБ оперативной памяти с быстрым процессором 3 ГГц.

Спасибо.

1 Ответ

0 голосов
/ 04 июня 2018

Я не уверен, что вы это имели в виду, но вы можете использовать пакет 'rbenchmark' ( здесь хороший пост в блоге о различных способах тестирования, включая rbenchmark).

Я провел несколько тестов с объектом 1,1 ГБ list.

library(rbenchmark)

Mylist <- list(a = data.frame(replicate(100000, sample(0:1, 1000, rep = TRUE))), 
               b = data.frame(replicate(100000, sample(0:1, 1000, rep = TRUE))), 
               c = data.frame(replicate(100000, sample(0:1, 1000, rep = TRUE))))

print(object.size(Mylist), units = "auto")

1.1 Gb

scores <- rbenchmark::benchmark("saveRDS_compress" = {
  saveRDS(Mylist, file = tempfile("mylist.rds"), compress = TRUE)
},
"saveRDS_not_compress" = {
  saveRDS(Mylist, file = tempfile("mylist.rds"), compress = FALSE)
}, 
"save_compress" = {
  save(Mylist, file = tempfile("mylist.rds"), compress = TRUE)
},
"save_not_compress" = {
  save(Mylist, file = tempfile("mylist.rds"), compress = FALSE)
},
"rlist::list.save_list.rds" = {
  rlist::list.save(Mylist, 'list.rds')
},
"rlist::list.save_list.rdata" = {
  rlist::list.save(Mylist, 'list.rdata')
},
"rlist::list.save_list.yaml" = {
  rlist::list.save(Mylist, 'list.yaml')
},
replications = 20,
columns = c("test", "replications", "elapsed",
            "relative", "user.self", "sys.self"))

dplyr::arrange(scores, elapsed)

                          test replications elapsed relative user.self sys.self
1        saveRDS_not_compress           20   82.20    1.000     23.68    23.83
2           save_not_compress           20   92.39    1.124     23.80    27.14
3 rlist::list.save_list.rdata           20  889.49   10.821    885.52     2.13
4   rlist::list.save_list.rds           20  912.86   11.105    909.09     1.95
5            saveRDS_compress           20  913.64   11.115    910.30     1.89
6               save_compress           20  919.03   11.180    915.03     2.13
7  rlist::list.save_list.yaml           20 3258.30   39.639   3155.67    97.20

Информация о системе: Windows 10 - 64 бит, Intel i7-7700 3,6 ГГц, 32 ГБ ОЗУ.

> sessionInfo()
R version 3.4.4 (2018-03-15)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...