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


Responder a