ff对象占用了全部内存?

时间:2012-09-25 03:52:06

标签: r memory-management

1)我打开RGui,然后输入require(ff),然后在RConsole中不再输入任何内容,我检查Windows Task Manager --> Processes --> RGui.exe并查看~30,000K的内存分配

2)我回到RConsole。我输入Data <- read.csv.ffdf(file="filename.csv",row.names=1)。这个.csv文件大约是30MB。

3)计算机加载数据,并在加载时将内存分配用于Rgui.exe。内存大幅增加到131,436K并在那里盘旋,直到.csv文件完成导入R.

AFTER (不是之前!)所有这些,我会去

 > object.size(Data)
  34510880 bytes

确认它在我的记忆中。

此问题也在here找到,但唯一答案中的声明是对object.size的调用将其置于内存中。然而,在我目睹我的记忆充满了这个物体之后,我做object.size。另外,在调用object.size时会出现ZERO延迟,所以我的计算机不可能只是在0滞后的情况下瞬间将30MB放入我的内存中。将30MB .csv加载到内存中需要60秒!

1 个答案:

答案 0 :(得分:2)

在不使用ffdf的情况下读入R应该是一个30 Mb的csv文件。你可能有很多专栏,这对ffdf来说效果不佳。以下示例运行正常,并且不使用您说的内存量:

spam = as.data.frame(matrix(runif(10e7), 1000, 2500)) # 76 mb
write.table(spam, file = "spam.csv", sep = ",")
spam2 = read.table("spam.csv", sep = ",")

ffdf旨在使用数量有限的非常大的csv文件(>&gt;> 30 mb)。在这种情况下,我认为没有任何理由使用ffdf。如果您想加快加载速度,只需使用保存为二进制格式的save保存对象,然后使用load再次加载。