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

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

Re: [shell-script] Melhorar algoritmo


From: MrBiTs
Subject: Re: [shell-script] Melhorar algoritmo
Date: Mon, 09 Nov 2009 07:57:25 -0200
User-agent: Thunderbird 2.0.0.23 (X11/20090817)

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

> Muito legal.. não conhecia esse parâmetro ! :)
> Mas Julio, o grep é "inteligente" para ler o arquivo1 uma vez e dps ler o
> arquivo2 uma vez?
> Ou para cada linha do arquivo1 ele faz uma leitura no arquivo2? :)

Um strace no comando mostra a você extamente o que ele está fazendo.

Além disso, vale verificar a performance. O grep -f é pelo menos 100% mais 
rápido do que o grep + paste que foi enviado e "SÓ" 300%
mais rápido que o seu laço for. Para esses testes, desprezei a gravação do 
arquivo de saída e joguei tudo para STDOUT. O seu código
ainda tem um "vício" que eu tenho encontrado em diversas pessoas: para cada 
iteração de um determinado laço, o resultado é gravado
num arquivo de saída. A forma

para cada passo faça
    processe dados 1 >> arquivo_de_saida
fim-para

Consome pelo menos 10% mais tempo do que a forma:

para cada passo faça
    processe dados
fim-para > arquivo_de_saida

Esse consumo é exponencial. Quanto mais redirecionamentos para o 
arquiv_de_saida você tiver dentro do laço, maior será o tempo.

Outro ponto que devemos notar é que, no seu laço, você usa a forma cat | grep, 
desnecessária visto o grep ser capaz de ler o
arquivo. Você não precisa (na grande maioria dos comandos) ler o arquivo e 
canalizá-lo para outro comando. O ganho que você teria só
de conhecer melhor as ferramentas que você tem à mão, nesse caso, beiraria os 
50%.

Os números de performance foram baseados no processamento de um arquivo de 
1.000.000 de linhas.

- --

Um abraço

.0. MrBiTs - address@hidden
..0 GnuPG  - 
http://www.rnp.br/keyserver/pks/lookup?op=get&search=0xAC37715A6DD1F186
000 Primeiro, aprender a ficar em pé. Depois, aprender a voar, Daniel-san. Lei 
da natureza. Não minha.


-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)

iEYEARECAAYFAkr354EACgkQrDdxWm3R8Ya39wCdGOQNksrFu6D7vRoZ3nHPf5t3
AbsAmQEtHvs0T6dr+dLWY2omOi1dFZ3X
=a34d
-----END PGP SIGNATURE-----


reply via email to

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