我是foreach
的新手,正在尝试进行并行计算。我的Windows 8.1笔记本电脑有4个核心。以下代码显示%dopar%
比%do%
慢。但为什么?我在这里想念什么?
library(doParallel)
#> Loading required package: foreach
#> Warning: package 'foreach' was built under R version 3.6.1
#> Loading required package: iterators
#> Loading required package: parallel
library(microbenchmark)
#> Warning: package 'microbenchmark' was built under R version 3.6.1
#find number of cores
parallel::detectCores()
#> [1] 4
no_cores <- detectCores() - 1
cl <- makeCluster(no_cores)
registerDoParallel(cl)
microbenchmark(x = foreach(i=1:10) %do% (i+1),
y = foreach(i=1:10) %dopar% (i+1))
#> Unit: milliseconds
#> expr min lq mean median uq max neval
#> x 8.393377 9.389422 12.89608 12.60476 15.14176 32.61851 100
#> y 14.840381 16.625099 21.05566 18.30625 23.38002 109.54543 100
## go back to sequential calculations
stopCluster(cl)
registerDoSEQ()