用doParallel在R中滚动回归 - 性能问题

时间:2015-03-25 07:37:52

标签: r doparallel

我正在进行滚动回归分析,并希望使用我的PC的多个内核来提高执行速度。我试过的代码看起来像这样:

library(doParallel)
y <- reg.data[,1][1:15000]
x1 <- reg.data[,2][1:15000]
x2 <- reg.data[,3][1:15000]
windowSize = 8820
registerDoParallel(cores=6)
ptm <- proc.time()
z1 <- foreach(i=seq(1, (length(y)-windowSize+1), 1), .combine=rbind) %do% {
  idx <- i:(i+windowSize-1)
  coefficients(lm(y[idx]~0+x1[idx]+x2[idx]))
}
print(proc.time() - ptm)

代码执行并产生正确的结果。问题在于,无论我在做什么,我在花费的时间方面得到大致相同的结果,如果它是2核或6我已经注册了registerDoParallel()。这与许多用户报告的类似任务形成鲜明对比。看看Windows中的TaskManager我可以看到所有6个核心都在做什么,而且与2个核心相比几乎没有加速(在总共~60秒执行时间内少于一秒)。我有什么想法吗?

0 个答案:

没有答案