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: Jeferson Santos
Subject: Re: [shell-script] Re: Minha contribuição de Feliz Ano novo
Date: Sun, 17 Jan 2010 11:11:15 -0200

Pois é, julio, se eu falar de anilhas pro meu pai, a resposta vai ser
a mesma...rs

Essa ideia do seq -w é interessante, vou colocar como switch no script.

Só pra gente fechar (até que alguem venha com mais uma otimização :-D ):

Juntando tudo em apenas 2 linhas:
real    0m1.961s
user    0m1.712s
sys     0m0.044s

Pra mim essa é a prova de que loops deveriam ser evitados sempre que
possível, pois apesar de simples, impactam bastante sobre o
desempenho.

Abraços,
Jeferson dos Santos
www.jeferson.info




2010/1/17 Jeferson Santos <address@hidden>:
> Opa! Deu diferença mesmo!
> Engraçado que apesar de não estarmos lidando com um scrip que
> necessariamente dependa da velocidade, as técnicas de otimização
> utilizadas aqui irão trazer ganhos em diversos outros scripts.
>
> O último script tinha esses tempos, de 1 à 100000:
> real    0m2.938s
> user    0m2.496s
> sys     0m0.064s
>
> Testando . no lugar de [0-9], de 1 à 100000:
> real    0m2.246s
> user    0m1.740s
> sys     0m0.108s
>
>
> Com isso, temos um ganho real de 0.692, no teste realizado, que eu
> posso considerar um realmente razoavel, julgando a simplicidade da
> tarefa.
>
>
> 2010/1/17 Marcelo Salhab Brogliato <address@hidden>:
>> 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]
>>
>>
>>
>> ------------------------------------
>>
>> ---------------------------------------------------------------------
>> 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: address@hidden
>> ---------------------------------------------------------------------
>> 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
>>
>>
>>
>
>
>
> --
> Abraços,
> Jeferson Santos
>



-- 
Abraços,
Jeferson Santos


reply via email to

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