что верно и в этой ситуации. Извините за двойной пост"

аюсь использоватьпакет doSMP это обеспечивает параллельный бэкэнд для пакета foreach.

Можете ли вы указать, что я делаю неправильно? Действительно, использование foreach таким образом значительно увеличивает время вычислений ...

#------register doSMP to be used with foreach------
library(doSMP)
w <- startWorkers(4)
registerDoSMP(w)
#--------------------------------------------------

#------A simple function------
sim, <- function(a, b)
{
    return(10 * a + b)
}
avec <- 1:200
bvec <- 1:400
#-----------------------------

#------The naive method------
ptime <- system.time({
mat <- matrix(NA, nrow=length(avec), ncol=length(bvec))
for(i in 1:length(avec))
{
    for(j in 1:length(bvec))
    {
         mat[i, j] <- sim(avec[i], bvec[j])
    }
}
})[3]
ptime

elapsed 
   0.36
#----------------------------

#------Using foreach------
ptime <- system.time({
mat2 <- foreach(b=bvec, .combine="cbind") %:%
         foreach(a=avec, .combine="c") %dopar%
     {
            sim(a, b)
    }
})[3]
ptime

elapsed 
  86.98
#-------------------------

РЕДАКТИРОВАТЬ

Этот вопрос очень похож на этот и был перенесен из stats.stackexchange.

Ответы на вопрос(2)

Ваш ответ на вопрос