<div dir="ltr">Obrigado a todos pela ajuda e debate.<div>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!!</div>
<div><br></div><div>Abraços,</div><div>Paulo Nogueira Starzynski </div></div><div class="gmail_extra"><br><br><div class="gmail_quote">Em 2 de setembro de 2013 18:33, Bernardo Rangel Tura <span dir="ltr"><<a href="mailto:tura@centroin.com.br" target="_blank">tura@centroin.com.br</a>></span> escreveu:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">On 09/01/2013 12:22 PM, Paulo Nogueira Starzynski wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Senhores,<br>
recorro a lista para buscar ajuda referente a uma questão de tempo de<br>
processamento no R.<br>
Escrevi um código para realizar, basicamente, operação de contagem<br>
dentro de subvetores de um vetor maior. O problema é que a performance<br>
vai caindo conforme a tarefa é executada.<br>
<br>
</blockquote>
<br>
<br></div>
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 ...<br>

<br>
[]s<br>
Tura<br>
<br>
vetor <- rnorm(1499855, mean=46.21,sd=6)<br>
d<-diff(vetor)<br>
k<-140<br>
progress<-seq(2,(length(vetor)<u></u>-k), by=10000)<br>
d.adj <- d[d>0]<br>
tam<- length(d.adj)<br>
pctMaiorDepois<-vector('<u></u>numeric', tam)<br>
marcacoes<-NA<div class="im"><br>
t1<-Sys.time()<br>
for (i in 2:tam){<br></div>
    subVetorD<-d.adj[(i+1):(i+k)]<br>
    pctMaiorDepois[i]<-mean(<u></u>subVetorD>0)<div class="im HOEnZb"><br>
  if (any(i==progress)) {<br>
    t2<-Sys.time()<br>
    print(paste(round(i/tam,2), round(difftime(t2,t1,units="<u></u>secs"),2)))<br>
    t1<-t2<br>
  }<br>
}<br>
<br></div><div class="HOEnZb"><div class="h5">
______________________________<u></u>_________________<br>
R-br mailing list<br>
<a href="mailto:R-br@listas.c3sl.ufpr.br" target="_blank">R-br@listas.c3sl.ufpr.br</a><br>
<a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" target="_blank">https://listas.inf.ufpr.br/<u></u>cgi-bin/mailman/listinfo/r-br</a><br>
Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" target="_blank">http://www.leg.ufpr.br/r-br-<u></u>guia</a>) e forneça código mínimo reproduzível.<br>
</div></div></blockquote></div><br></div>