Это действительно раздувает мой разум. Основной цикл занимает 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% иногда медленнее, чем для?