我决定测试 ff 包的关键优势 - RAM 最小分配(PC 规格:i5、RAM 8Gb、Win7 64 位、Rstudio)。
根据包描述,我们可以像虚拟对象一样操作物理对象(文件),就好像它们被分配到 RAM 中一样。因此,实际 RAM 使用量大大减少(从 Gb 到 kb)。我使用的代码如下:
library(ff)
library(ffbase)
setwd("D:/My_package/Personal/R/reading")
x<-cbind(rnorm(1:100000000),rnorm(1:100000000),1:100000000)
system.time(write.csv2(x,"test.csv",row.names=FALSE))
system.time(x <- read.csv2.ffdf(file="test.csv", header=TRUE, first.rows=100000, next.rows=100000000,levels=NULL))
print(object.size(x)/1024/1024)
print(class(x))
实际文件大小为 4.5 Gb,实际使用的 RAM 以这种方式变化(通过任务管理器):2,92 -> 上限(~8Gb)-> 5.25Gb。对象大小(通过 object.size())约为 12 kb。
我担心的是 RAM 额外分配(~2.3 GB)。根据包描述,它应该只增加了 12 kb。我不使用任何字符。
也许我错过了一些 ff 包。