我在unix(它的集群)和windows(intel core duo,2Gb RAM)上运行相同的代码。我可以看到运行时间有显着差异。我可以在unix中看到,它只使用一个核心,但在Windows上,它可能使用两个核心(我不确定)。我关注的是:
Windows:
user system elapsed
207.12 8.82 472.04
Unix
user system elapsed
327.765 2.493 330.819
我不明白,为什么cpu处理时间和窗口的运行时间差别太大。我将代码分成几段,这只发生在读写部分(I / O)上,其余的计算与unix相比非常快,并且在“用户”和“已用时间”没有任何区别
user system elapsed
48.765 0.00 52.69
我没有做任何特别的事情,但我正在阅读非常大的文件300mb
indata <- read.csv(mutFile, sep="\t", header = TRUE)
如何避免这种差异以提高整体表现?
答案 0 :(得分:2)
300 MB远非“非常大”。您可以按照read.csv
中的建议,特别是“内存使用”一节,提高?read.csv
的速度。这应该会使两个系统的运行时间缩短。
至于系统之间的区别,我怀疑Unix机箱有更快的硬盘和/或更快的内存。
答案 1 :(得分:0)
为了在读取数据集时获得高性能,我建议购买固态硬盘(SSD)。但是,您的其他硬件(主要是您的SATA控制器)可能是瓶颈。此外,就Gb /单位资金而言,SSD并不便宜。一般来说,性能上的差异可以通过硬件的差异来解释(“正常”硬盘与笔记本电脑硬盘相比)。解决方案是花钱购买更快的机器。或者,就像@JoshuaUlrich所说,花一些时间优化文本文件的读取,以便通过当前的硬件获得良好的性能提升。