[R-br] Otimizar tempo de processamento

Benilton Carvalho beniltoncarvalho em gmail.com
Quinta Agosto 18 16:14:53 BRT 2011


Tiago,

esse e' um problema legal... se vc derivar as distribuicoes a mao,
certamente vc consegue ganhos bem maiores...

FYI: usando propriedades de estatistica, vc chega na mudanca que eu
fiz na geracao das suas variaveis aleatorias.

Adicionalmente, eu nao tive paciencia de esperar o seu codigo original
acabar de rodar... eu o cancelei depois de um pouco mais de 1h10m.

Abaixo uma sugestao para voce:


library(foreach)
library(doMC)
registerDoMC()
programa2 <- function(f,n,m) {
    ## f: número máximo de filhos
    ## n: número de gerações
    ## m: número de iterações
    S <- foreach(p=seq(0,1,by=0.01), .combine=rbind) %dopar% {
        pp <- 0
        for (g in 1:m) {
            y <- 1
            for (k in 1:n)
                y <- rbinom(1, y*f, p)
            if (y > 0) pp <- pp + 1
        }
        c(p, pp/m)
    }
    return(S)
}
system.time(prog2 <- programa2(2,200,1000))
plot(prog2, xlab = "p", ylab = "Probabilidade de Percolação")

para matar sua curiosidade, no meu computador, eu obtive:

> system.time(prog2 <- programa2(2,200,1000))
   user  system elapsed
257.072   2.562  20.835


Mais detalhes sobre a lista de discussão R-br