最近在研究R并行计算,用自定义函数测试了下,发现并行计算居然比单线程计算耗时还大,测试时还发现,真正并行计算的时间只有十几秒,而且各个cpu的使用率都达不到90%,不知道有没有改进的办法。希望各给高手帮忙解答一下:
自定义函数如下:
> func
function(x,y){
return(x+y)
}
单线程代码如下:
> system.time({ x <- foreach(a = 1:500000,b=rep(10,500000)) %do% func(a,b) })
用户 系统 流逝
398.044 2.856 400.906
并行计算代码如下:
> cl <- makeCluster(4)
> registerDoParallel(cl)
> system.time({ x <- foreach(a = 1:500000,b=rep(10,500000)) %dopar% func(a,b) })
用户 系统 流逝
526.683 12.466 539.232