【发布时间】:2013-03-27 12:25:52
【问题描述】:
通过迭代,我构造了一个非常大的矩阵,为了加快这些迭代,我将这个矩阵分成块,然后放入一个列表中。
我最好将我的矩阵块保存到一个文本文件中,并将新块附加到同一个文本文件中,而不是将它们全部保存在一个列表中。它在内存使用和性能(运行模拟的时间)方面有什么改变吗?
第二个问题:有没有办法知道 R 对象的内存大小(无需将其保存到 .Rdata 文件中)
提前谢谢你!
【问题讨论】:
-
我想说,如果您可以将所有内容保存在 RAM 中,那么这样做会更快。如果内存不足,可以将对象保存到 .Rdata 文件中(使用
save),这比文本文件快,然后在需要时使用load。 -
@Juba 感谢您的回答。那么有没有办法知道给定 R 对象的内存大小(无需将其保存到 .Rdata 文件中)?
-
可以使用
object.size()函数。 -
为什么不试试看呢?
-
如果您一次保存一个对象,我会使用
saveRDS()而不是save()。文档中的save()用于“将一个或多个命名对象保存并恢复到环境中”。同样出于速度目的,请考虑您要使用的压缩方式。save()和saveRDS()有压缩或不压缩选项,可以加快速度。我认为(但尚未测试任何东西)在不压缩的情况下保存/加载对象可能会更快。但是,如果这很重要,那么您的缺点是文件更大。
标签: performance r memory-management