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

2010-01-17 Por tôpico Julio C. Neves
Fala Marcelo, o que vc explicou é perfeitamente compreensível e concordo totalmente contigo, porém a diferença de tempo entre a expansão de chaves e a execução do seq, para números não muito grandes (tipo 2000) é pequena. Para números pequenos, as chaves ganham e para números grandes o seq ganha (p

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

2010-01-17 Por tôpico Marcelo Salhab Brogliato
Hehehehehe! Grande Julio! Aprendi shell lá no seu bar, hehehe.. ;) Acho que a diferença vem do seguinte: No eval com echo, estamos executando um: echo {1..10}, que é o mesmo que echo 1 2 3 4 5 ... 10. Desta maneira, a expansão em chaves irá ter que gerar a string com esses números todos (q

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

2010-01-17 Por tôpico Marcelo Salhab Brogliato
Olá Jeferson, só um comentário sobre sua afirmação de que loops devem ser evitados. Por exemplo: seq 1 1000 for i in $(seq 1 1000); do echo $i; done o segundo é mais lento que o primeiro (fica mais notável se aumentarmos o 1000). Mas, até onde sei, o segundo irá executar 1000 vezes o programa ech

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

2010-01-17 Por tôpico Jeferson Santos
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: real0m1.961s user0m1.712s

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

2010-01-17 Por tôpico Jeferson Santos
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 à 10: real0m2.938s user0m2.49

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

2010-01-17 Por tôpico Julio C. Neves
Falou Marcelo, logo após enviar para a lista o script, me ocorreu a mesma ideia, porém juntando as 2 linhas, e o prg ficaria assim: Tudo=$(seq $1 $2 | sed 's/ //g;s/\(.\)/\1\n/g') sort -n <(echo "$Tudo") | uniq -c | awk '{print $2" = "$1}' Mas o que me deixa idiotizado é o fato do seq ter sido ma

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

2010-01-17 Por tôpico Marcelo Salhab Brogliato
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,

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

2010-01-16 Por tôpico Jeferson Santos
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 de

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

2010-01-16 Por tôpico Julio C. Neves
Fala Jeferson, - Não me pergunte se dá para fazer em Shell, pq d. A pergunta é: "qual a melhor maneira de fazer em shell?" Essa frase eu sempre digo, e na nossa lista tem pelo menos uns 200 ex-alunos meus que podem comprovar isso. Por isso, adorei a sua observação. Veio a confirmar o que sempre

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

2010-01-16 Por tôpico lordhulk
Olá Julio, Poxa, infelizmente só achei essa sua resposta entrando direto no forum. Por algum motivo nao recebi por e-mail... A sua idéia funcionou perfeitamente. Poderia dar uma destrinchada pra eu aprender esse conceito, pq ficou mt interessante. A única coisa que notei foi que o desempenho da