Попытка начать работу с doParallel и foreach, но без улучшения

Я пытаюсь использовать пакет doParallel и foreach, но я получаю снижение производительности, используя пример начальной загрузки в руководстве, найденном здесьCRANpage.

library(doParallel)
library(foreach)
registerDoParallel(3)
x <- iris[which(iris[,5] != "setosa"), c(1,5)]
trials <- 10000
ptime <- system.time({
  r <- foreach(icount(trials), .combine=cbind) %dopar% {
    ind <- sample(100, 100, replace=TRUE)
    result1 <- glm(x[ind,2]~x[ind,1], family=binomial(logit))
    coefficients(result1)
    }
  })[3]
ptime

Этот пример возвращает56.87.

Когда я меняюdopar чтобы простоdo чтобы запустить его последовательно, а не параллельно, он возвращает36.65.

Если я сделаюregisterDoParallel(6) параллельное время42.11 но все еще медленнее, чем последовательно.registerDoParallel(8) получает40.31 все еще хуже чем последовательный.

Если я увеличуtrials до 100 000, то последовательный прогон занимает417.16 и параллельный прогон с 3 рабочими занимает597.31, С 6 работниками параллельно требуется425.85.

Моя система

Dell Optiplex 990

Windows 7 Профессиональная 64-битная

16 ГБ ОЗУ

Четырехъядерный процессор Intel i-7-2600 с тактовой частотой 3,6 ГГц

Я что-то здесь не так делаю? Если я сделаю самую надуманную вещь, о которой только могу подумать (замена вычислительного кода наSys.sleep(1)) тогда я получу фактическое сокращение, прямо пропорциональное количеству работников. Мне остается удивляться, почему пример в руководстве снижает производительность для меня, в то время как для них это ускоряет процесс?

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

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