如何解决为什么 dump+source 对于大型数据结构比 save+load 或 saveRDS+readRDS 慢得多,即使 ascii=TRUE?
对于一个中等大小 (270 x 23 x 101) 的 3 维数组 foo
,以下所有将 foo
的表示写入文件的方法都运行得非常快(大约为1 秒):
dump('foo','foo-dump')
save('foo',file='foo-save',compress=FALSE)
save('foo',file='foo-save-ascii',ascii=TRUE,compress=FALSE)
saveRDS(foo,'foo-saveRDS','foo-saveRDS-ascii',compress=FALSE)
以下所有将表示读回 R 的方法也是如此
load('foo-save')
load('foo-save-ascii')
foo = readRDS('foo-saveRDS')
foo = readRDS('foo-saveRDS-ascii')
但是 source('foo-dump')
需要十多分钟! (显然,确切的时间取决于硬件以及您在做什么。但我在同一台机器上测试了所有这些。)
这是怎么回事?我可能期望 source
的更大灵活性会带来一些额外的开销,但超过两个数量级似乎是极端的。源代码是什么导致它需要更长的时间?
此外,鉴于这种现象存在,除了提高人类可读性之外,还有什么理由使用 dump
而不是 save
(或 saveRDS
)吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。