[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