[R] Benefit of Iterators (package iterator)

Doran, Harold
Thu, 08 Dec 2016 14:20:03 -0000

R-Help (and package author)

I'm trying to understand within the context of R what the benefit of using
an iterator is. My only goal in using the foreach package is to improve
computational speed with some embarrassingly parallel tasks I have to compute.

I took the example found at the link below to provide a reproducible example and
ran it in a "conventional" way to iterate in a loop and the timing
suggests here (as well as with my actual project) that using an iterator
generates the same object, but at a much slower speed.

If I can get the same thing faster without using an iterator what would be the
potential of its use?

https://msdn.microsoft.com/en-us/microsoft-r/foreach

> library(doParallel)
> cl <- makeCluster(8)
> registerDoParallel(cl)
> x <- matrix(rnorm(1000000), ncol=1000)
> itx <- iter(x, by='row')
> system.time(r1 <- foreach(i=itx, .combine=c) %dopar% mean(i))
   user  system elapsed
   0.40    0.08    0.87
> system.time(r2 <- foreach(i= 1:nrow(x), .combine=c) %dopar% mean(x[i,]))
   user  system elapsed
   0.41    0.03    0.81
> all.equal(r1,r2)
[1] TRUE