-----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 - [email protected]
..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-----