
Obrigado a todos pela ajuda e debate. A principal diferença foi alocar todo o vetor antes de começar a atribuir valores às suas posições. Essa modificação fez um processo de aproximadamente 15 minutos ser executado em menos de 45 segundos!! Abraços, Paulo Nogueira Starzynski Em 2 de setembro de 2013 18:33, Bernardo Rangel Tura <tura@centroin.com.br>escreveu:
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 } }
______________________________**_________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/**cgi-bin/mailman/listinfo/r-br<https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-**guia<http://www.leg.ufpr.br/r-br-guia>) e forneça código mínimo reproduzível.