shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Re: Minha contribuição de Feliz Ano novo


From: Marcelo Salhab Brogliato
Subject: Re: [shell-script] Re: Minha contribuição de Feliz Ano novo
Date: Sun, 17 Jan 2010 01:30:26 -0200

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 <address@hidden>

>
>
> 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]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]