[R-br] Questão de performance em processamento
Bernardo Rangel Tura
tura em centroin.com.br
Segunda Setembro 2 18:33:55 BRT 2013
On 09/01/2013 12:22 PM, Paulo Nogueira Starzynski wrote:
> Senhores,
> recorro a lista para buscar ajuda referente a uma questão de tempo de
> processamento no R.
> Escrevi um código para realizar, basicamente, operação de contagem
> dentro de subvetores de um vetor maior. O problema é que a performance
> vai caindo conforme a tarefa é executada.
>
Paulo fiz algumas mexidas no seu código acho que ficou muito bom, mas
veja se resolve. A principal diferença foi eliminar o if dentro do loop
com o uso de um outro vetor d.adj. No meu sistema rodou tudo em 14.22
segundos com os passos variando entre 0.23 a 0.26. Considerando que não
tenho nenhuma otimização no meu R acho que está bom ...
[]s
Tura
vetor <- rnorm(1499855, mean=46.21,sd=6)
d<-diff(vetor)
k<-140
progress<-seq(2,(length(vetor)-k), by=10000)
d.adj <- d[d>0]
tam<- length(d.adj)
pctMaiorDepois<-vector('numeric', tam)
marcacoes<-NA
t1<-Sys.time()
for (i in 2:tam){
subVetorD<-d.adj[(i+1):(i+k)]
pctMaiorDepois[i]<-mean(subVetorD>0)
if (any(i==progress)) {
t2<-Sys.time()
print(paste(round(i/tam,2), round(difftime(t2,t1,units="secs"),2)))
t1<-t2
}
}
Mais detalhes sobre a lista de discussão R-br