r - 在 R 中,有没有一种方法可以基准测试并估算使用 saveRDS 函数保存 7 GB 对象所需的时间?
问题描述
在R
中,我目前有一个需要保存的 7 GB 列表对象。有没有一种方法可以基准测试并估计使用saveRDS()
默认值保存 7 GB 对象所需的时间?(例如文件压缩)我试图近似它,但不确定如何去做。我在一台有 16 个内核的计算机上(不确定这是否会有所不同),并且有 30 GB 的 RAM 和一个快速的 3+ GHZ 处理器。
谢谢。
解决方案
我不确定这是否是您的意思,但您可以使用“rbenchmark”包(这里有一篇关于不同基准测试方法的不错的博客文章,包括rbenchmark
)。
我用一个 1.1GB 的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.60Hz,32GB RAM。
> sessionInfo()
R version 3.4.4 (2018-03-15)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)
推荐阅读
- flutter - 从颤振插入后在数据库中重复的数据
- php - JQuery 和 PHP:是否可以通过 AJAX 调用下载文件?
- variables - YAML 变量,你可以在变量中引用变量吗?
- c# - 外键问题?
- java - Java GUI - 在异步任务完成之前,进度条不会更新
- python - 如何在 np.where 中执行动态案例并在 pandas 数据框中创建一个新列,就像带有 expr 列的 pyspark 一样?
- python - 枚举抛出错误的通用数据类型
- .htaccess - .htaccess 重定向在美化 url 时会导致循环
- r - as.numeric 函数在嵌套循环中不起作用
- python - Heroku 应用程序崩溃 /app/.apt/opt/google/chrome/chrome 不再运行