我正在进行滚动回归分析,并希望使用我的 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 秒的执行时间不到一秒)。任何想法我做错了什么?