[R] Comparing execution times

Alaios alaios at yahoo.com
Mon Apr 11 12:29:56 CEST 2011


Dear all,
In my 'simple' computer I was running some experiments to help me understand how faster a multicore lapply will be. I thought it might be interesting for some people to look at the results.

Even though are not accurate, still might be a good indicator how much improvement there can be.

A.Case. The classic: for 1:100
for (i in c(1:dimz)){
    print(sprintf('Creating the %d map',i));
    Shadowlist[,,i]<- GaussRF(x=x, y=y, model=model, grid=TRUE,param=c(mean,variance,nugget,scale,Whit.alpha))
  
}
   user   system  elapsed 
1825.699  303.100 1063.352 

--------------------------------------------------------------------------

B.Case. Same as above but with lapply instead of for
Shadowlist<-lapply(1:dimz, function(i) {
			      print(sprintf('Creating the %d map',i));
			      GaussRF(x=x, y=y, model=model, grid=TRUE,param=c(mean,variance,nugget,scale,Whit.alpha))
			    }
) )

user   system  elapsed 
1816.784  296.745 1062.142 

-------------------------------------------

C.Case. Foreach is considered to be easier to be applied to manycores.

foreach (i=1:dimz) %do% {
    print(sprintf('Creating the %d map',i));
    Shadowlist[,,i]<-f <- GaussRF(x=x, y=y, model=model, grid=TRUE,param=c(mean,variance,nugget,scale,Whit.alpha))
    
}



 user   system  elapsed 
1027.058   13.243 1031.849 



-----------------------------------
D. Case. The really multicore lapply. Great difference

system.time(Shadowlist<-mclapply(1:dimz, function(i) {
+ 			      #print(sprintf('Creating the %d map',i));
+ 			      GaussRF(x=x, y=y, model=model, grid=TRUE,param=c(mean,variance,nugget,scale,Whit.alpha))
+ 			    }
+ 	    ) 
+ )
   user  system elapsed 
263.134  99.639 549.366 

-----------------------------------

My computer is a normal four core pc. 
Great improvement with mlcapply.



More information about the R-help mailing list