gpt4 book ai didi

r - 加快RData加载

转载 作者:行者123 更新时间:2023-12-03 08:58:45 28 4
gpt4 key购买 nike

我检查了几个相关的问题是这样的

How to load data quickly into R?

我引用了评分最高的答案的特定部分

It depends on what you want to do and how you process the data further. In any case, loading from a binary R object is always going to be faster, provided you always need the same dataset. The limiting speed here is the speed of your harddrive, not R. The binary form is the internal representation of the dataframe in the workspace, so there is no transformation needed anymore



我真的这么认为。但是,生活是关于实验的。我有一个包含igraph对象的1.22 GB文件。就是说,我认为在这里发现的内容与对象类无关,主要是因为甚至在调用“库”之前,您都可以加载('file.RData')。

该服务器中的磁盘非常酷。如您所愿,将读取时间记入内存
user@machine data$ pv mygraph.RData > /dev/null
1.22GB 0:00:03 [ 384MB/s] [==================================>] 100% `

但是,当我从R加载此数据时
>system.time(load('mygraph.RData'))
user system elapsed
178.533 16.490 202.662

因此,加载* .RData文件的速度似乎比磁盘限制慢60倍,这应该意味着R实际上 在“加载”时确实做了一些事情。

使用不同的R版本和不同的硬件时,我有相同的感觉,只是这一次我有耐心进行基准测试(主要是因为使用了如此酷的磁盘存储,实际加载需要多长时间太糟糕了)

关于如何克服这一点的任何想法?

回答后的想法
save(g,file="test.RData",compress=F)

现在文件为3.1GB,之前为1.22GB。就我而言,加载解压缩速度更快(到目前为止,磁盘并不是我的瓶颈)
> system.time(load('test.RData'))
user system elapsed
126.254 2.701 128.974

将未压缩的文件读取到内存大约需要12秒钟,因此我确认大部分时间都花在了设置环境上

我会返回RDS结果的,听起来很有趣

我们在这里
system.time(saveRDS(g,file="test2.RData",compress=F))
user system elapsed
7.714 2.820 18.112

我得到的3.1GB就像未压缩的“保存”一样,尽管md5sum有所不同,可能是因为 save也存储了对象名称

正在阅读...
> system.time(a<-readRDS('test2.RData'))
user system elapsed
41.902 2.166 44.077

因此,结合这两种想法(解压缩和RDS),运行速度提高了5倍。感谢您的贡献!

最佳答案

save默认情况下会压缩,因此解压缩该文件需要花费更多时间。然后,将较大的文件加载到内存需要更长的时间。您的pv示例只是将压缩数据复制到内存中,这对您不是很有用。 ;-)

更新:

我测试了我的理论,但它是错误的(至少在我的配备3.3Ghz CPU和7200RPM HDD的Windows XP计算机上)。加载压缩文件的速度更快(可能是因为它减少了磁盘I / O)。

多余的时间花费在RestoreToEnv(在saveload.c中)和/或R_Unserialize(在serialize.c中)。因此,您可以通过更改这些文件来加快加载速度,或者使用saveRDS将对象分别保存在myGraph.RData中,然后以某种方式在多个R进程中使用loadRDS将数据加载到共享内存中...

关于r - 加快RData加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11559628/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com