Olá Jeferson e Julio, neste linha: Tudo=$(sed 's/ //g;s/\([0-9]\)/\1\n/g' <<< $Tudo) sabemos que tudo o que sobra são números e, pelos meus testes, substituir [0-9] por . melhora 40% a performance (deste comando, não do todo).
A explicação seria não ter que verificar se o digito está entre 0 e 9, evitando milhares de comparações. abraços, Salhab 2010/1/17 Jeferson Santos <[email protected]> > > > Olá Julio, > > Que bom que gostou da observação, pois é fruto de muito chope virtual > no botequim do shell...rs > > Voltando ao assunto, refiz os testes. > O seu script foi um pouco mais rapido que o meu, de 1 a 1000, sendo > assim, resolvi deixar as coisas mais interessantes e aumentei pra > 100.000, só pra deixar a coisa ferver. > Obviamente não daria pra te vencer num duelo de script mais de 1x...rs > sendo assim, veja os resultados da surra q levei contra seu script > novo: > > Meu script, de 1 a 100000 > real 0m58.144s > user 0m56.128s > sys 0m2.144s > > Seu script, de 1 a 100000 > real 0m3.202s > user 0m2.740s > sys 0m0.084s > > Tendo como base estes dados, resolvi mesclar os 2 scripts, linha por > linha, pra ver o melhor de cada um. A única coisa que testei e deu > diferença foi usar o seq no lugar do eval echo. Também adicionei uma > linha em awk (que incrivelmente nao causou impacto no desempenho, até > pelo fato de ter sido usado apenas uma vez) pra deixar a saída > exatamente como estava no meu script original. > Eis o resultado: > > real 0m2.938s > user 0m2.496s > sys 0m0.064s > > Aqui está o script modificado: > ----------------------------------- > #!/bin/bash > Tudo=$(seq $1 $2) > > Tudo=$(sed 's/ //g;s/\([0-9]\)/\1\n/g' <<< $Tudo) > sort -n <(echo "$Tudo") | uniq -c | awk '{print $2" = "$1}' > ----------------------------------- > > Abraços à todos, > Jeferson dos Santos > > > [As partes desta mensagem que não continham texto foram removidas] ------------------------------------ --------------------------------------------------------------------- Esta lista não admite a abordagem de outras liguagens de programação, como perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio aviso. --------------------------------------------------------------------- Sair da lista: [email protected] --------------------------------------------------------------------- Esta lista é moderada de acordo com o previsto em http://www.listas-discussao.cjb.net --------------------------------------------------------------------- Servidor Newsgroup da lista: news.gmane.org Grupo: gmane.org.user-groups.programming.shell.brazil Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/shell-script/ <*> Para sair deste grupo, envie um e-mail para: [email protected] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
