ローリング回帰分析を行っており、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 つのコアに比べて実質的に速度が向上していないことがわかります (実行時間の合計で 1 秒未満 ~ 60 秒)。私が間違っていることは何ですか?