运行R的两个实例以提高大数据读取性能

时间:2013-07-18 17:21:24

标签: r performance

我想读入多个CSV文件(~50),运行多个操作,然后使用write.csv()输出主文件。由于CSV文件较大(约80 Mb),我想知道打开两个R实例是否更有效,在一个实例上读取一半CSV,在另一个实例上读取一半。然后我会将每个写入一个大型CSV,读入两个CSV,并将它们组合成一个主CSV。有谁知道如果运行两个R实例会增加读入所有csv所需的时间吗?

我正在使用带有4Gb RAM的Macbook Pro OSX 10.6。

2 个答案:

答案 0 :(得分:2)

如果大部分代码执行时间用于读取文件,那么它可能会更慢,因为两个R进程将竞争磁盘I / O.但如果大部分时间用于“运行一系列操作”,它会更快。

答案 1 :(得分:1)

read.table()和相关可能会很慢。 判断您是否可以从并行化中受益的最佳方法是为R脚本计时,并对文件进行基本读取。例如,在终端中:

time cat *.csv > /dev/null

如果“cat”时间明显较低,则问题不在于I / O限制,您可以 并行。在这种情况下,您应该使用并行包,例如

library(parallel)
csv_files <- c(.....)
my_tables <- mclapply(csv_files, read.csv)