这真的让我大吃一惊。在我的计算机上,基本循环大约需要 8 秒:
system.time({
x <- 0
for (p in 1:2) {
for (i in 1:500) {
for (j in 1:5000) {
x <- x + i * j
}
}
}
})
x
而如果我foreach
在非并行模式下使用,它只需要 0.7 秒!!!
system.time({
x <- 0
foreach(p = 1:2, .combine = rbind) %do%
for (i in 1:500) {
for (j in 1:5000) {
x <- x + i * j
}
}
})
x
结果是一样的,但foreach
不知何故能够比基本 R 快得多!基本 R 的低效率在哪里?
这怎么可能?
事实上,与这个结果相比,我得到了完全相反的结果:为什么 foreach() %do% 有时比 for 慢?