Nothing
suppressMessages(library(doParallel))
cl <- makePSOCKcluster(4)
registerDoParallel(cl)
cat(sprintf('doParallel %s\n', packageVersion('doParallel')))
junk <- matrix(0, 1000000, 8)
cat(sprintf('Size of extra junk data: %d bytes\n', object.size(junk)))
x <- iris[which(iris[,5] != "setosa"), c(1,5)]
trials <- 10000
ptime <- system.time({
r <- foreach(icount(trials), .combine=cbind,
.export='junk') %dopar% {
ind <- sample(100, 100, replace=TRUE)
result1 <- glm(x[ind,2]~x[ind,1], family=binomial(logit))
coefficients(result1)
}
})[3]
cat(sprintf('parallel foreach: %6.1f sec\n', ptime))
ptime2 <- system.time({
snowopts <- list(preschedule=TRUE)
r <- foreach(icount(trials), .combine=cbind,
.export='junk', .options.snow=snowopts) %dopar% {
ind <- sample(100, 100, replace=TRUE)
result1 <- glm(x[ind,2]~x[ind,1], family=binomial(logit))
coefficients(result1)
}
})[3]
cat(sprintf('parallel foreach with prescheduling: %6.1f sec\n', ptime2))
ptime3 <- system.time({
chunks <- getDoParWorkers()
r <- foreach(n=idiv(trials, chunks=chunks), .combine=cbind,
.export='junk') %dopar% {
y <- lapply(seq_len(n), function(i) {
ind <- sample(100, 100, replace=TRUE)
result1 <- glm(x[ind,2]~x[ind,1], family=binomial(logit))
coefficients(result1)
})
do.call('cbind', y)
}
})[3]
cat(sprintf('chunked parallel foreach: %6.1f sec\n', ptime3))
ptime4 <- system.time({
mkworker <- function(x, junk) {
force(x)
force(junk)
function(i) {
ind <- sample(100, 100, replace=TRUE)
result1 <- glm(x[ind,2]~x[ind,1], family=binomial(logit))
coefficients(result1)
}
}
y <- parLapply(cl, seq_len(trials), mkworker(x, junk))
r <- do.call('cbind', y)
})[3]
cat(sprintf('parLapply: %6.1f sec\n', ptime4))
stime <- system.time({
y <- lapply(seq_len(trials), function(i) {
ind <- sample(100, 100, replace=TRUE)
result1 <- glm(x[ind,2]~x[ind,1], family=binomial(logit))
coefficients(result1)
})
r <- do.call('cbind', y)
})[3]
cat(sprintf('sequential lapply: %6.1f sec\n', stime))
stime2 <- system.time({
r <- foreach(icount(trials), .combine=cbind) %do% {
ind <- sample(100, 100, replace=TRUE)
result1 <- glm(x[ind,2]~x[ind,1], family=binomial(logit))
coefficients(result1)
}
})[3]
cat(sprintf('sequential foreach: %6.1f sec\n', stime2))
stopCluster(cl)
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.