我的 2 美分:SSD 仅当您的应用程序存储在其上而不是您的数据时才会得到回报。即使这样,也只有在需要大量访问磁盘的情况下,例如操作系统。人们将您指向分析是正确的。我可以直接告诉你,几乎所有的读取时间都用于处理,而不是读取磁盘。
考虑数据的格式而不是存储位置会带来更多好处。通过使用正确的应用程序和正确的格式,可以加快读取数据的速度。就像使用 R 的内部格式而不是摸索文本文件一样。让它成为一个感叹号:永远不要继续摸索文本文件。如果您需要速度,请使用二进制文件。
由于开销的原因,如果您有 SSD 或普通磁盘来读取数据,通常不会有什么不同。我两者都有,并使用普通磁盘存储我的所有数据。我有时会在大数据集周围玩弄,从来没有遇到过问题。当然,如果我必须非常繁重,我只会在我们的服务器上工作。
因此,当我们谈论大量数据时,它可能会有所不同,但即便如此,我仍然非常怀疑磁盘访问是否是限制因素。除非你不断地读写磁盘,但我会说你应该重新开始思考你到底在做什么。与其将这笔钱花在 SDD 驱动器上,不如增加内存可能是更好的选择。或者只是说服老板给你一个像样的计算服务器。
使用伪造数据帧的时序实验,在 SSD 磁盘与普通磁盘上以文本格式与二进制格式进行读写。
> tt <- 100
> longtext <- paste(rep("dqsdgfmqslkfdjiehsmlsdfkjqsefr",1000),collapse="")
> test <- data.frame(
+ X1=rep(letters,tt),
+ X2=rep(1:26,tt),
+ X3=rep(longtext,26*tt)
+ )
> SSD <- "C:/Temp" # My ssd disk with my 2 operating systems on it.
> normal <- "F:/Temp" # My normal disk, I use for data
> # Write text
> system.time(write.table(test,file=paste(SSD,"test.txt",sep="/")))
user system elapsed
5.66 0.50 6.24
> system.time(write.table(test,file=paste(normal,"test.txt",sep="/")))
user system elapsed
5.68 0.39 6.08
> # Write binary
> system.time(save(test,file=paste(SSD,"test.RData",sep="/")))
user system elapsed
0 0 0
> system.time(save(test,file=paste(normal,"test.RData",sep="/")))
user system elapsed
0 0 0
> # Read text
> system.time(read.table(file=paste(SSD,"test.txt",sep="/"),header=T))
user system elapsed
8.57 0.05 8.61
> system.time(read.table(file=paste(normal,"test.txt",sep="/"),header=T))
user system elapsed
8.53 0.09 8.63
> # Read binary
> system.time(load(file=paste(SSD,"test.RData",sep="/")))
user system elapsed
0 0 0
> system.time(load(file=paste(normal,"test.RData",sep="/")))
user system elapsed
0 0 0