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

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

Re: [shell-script] Ordenar base por campo


From: MrBiTs
Subject: Re: [shell-script] Ordenar base por campo
Date: Fri, 14 May 2010 07:42:54 -0300
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.9) Gecko/20100423 Lightning/1.0b1 Thunderbird/3.0.4

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

> Antes de mais nada quero agradecer pela sua ajuda, esta me ajudando 
> muito a descobrir novas formas de fazer as coisas.
E sempre tem uma forma diferente. E não é "pegar no seu pé". É te empurrar para 
você melhorar.
Se não aguenta, PEDE PRA SAIR, Zero-Meia!

> Solução MrBits(teu script tá dentro desse "teste")
> [root@ProxyP15 dhcp]# time ./teste > /dev/null
> 
> real    0m0.220s
> user    0m0.186s
> sys     0m0.039s
>
> # Solução com sed + sort + cut
> [root@ProxyP15 dhcp]# time sed -r 
> 's/^(.*;.*;.*;.*;.*;)(.*;)(.*;.*;)/\2\1\2\3/g' Rede50.adm.db |sort -n 
> -t. -k1,1 -k2,2 -k3,3 -k4,4 |cut -d";" -f2- > /dev/null
> 
> real    0m0.213s
> user    0m0.213s
> sys     0m0.005s
> 
> # Solução com awk + sort + cut
> [root@ProxyP15 dhcp]# time awk -F ';' '{print 
> $6";"$1";"$2";"$3";"$4";"$5";"$6";"$7";"$8";"}' Rede50.adm.db |sort -n 
> -t. -k1,1 -k2,2 -k3,3 -k4,4 |cut -d";" -f2- > /dev/null
> 
> real    0m0.172s
> user    0m0.172s
> sys     0m0.007s
> 
> A mais eficiente foi a com o awk, eu pensava que ele era mais pesado, 
> mas se mostrou melhor.

Cara, quem fez o trabalho de ordenação nas duas soluções foi o sort (e você não 
mudou um ponto nele), não o sed ou o awk. Você só
usou essas ferramentas para cortar o registro em seus campos. Então, você não 
testou a performance da ordenação mas sim a
performance de quem corta o registro melhor.

Se levarmos em conta que meu script cortou os registros, transformou o IP para 
sua forma de 32 bits e ainda utilizou o sort para
organizar a lista, há um trabalho redundante nele, e dai vem a pior 
performance. Nos dois casos, quem fez o trabalho foi o sort, e
isso mostra uma utilização avançadíssima dele, mas se vc escrever um script em 
bash puro usando qualquer algorítimo de sorting (acho
que um bubble sort é mais eficiente nesses casos), sem fazer pipeing para sort 
ou cut, vc vai ver o sort tomar um couro.

Claro que isso é discutir sexo dos anjos. Há muito mais natureza Unix em uma 
linha de shell-script do que em 10.000 linhas de código
C. Se temos o sort pronto, pra que reinventar a roda ?


- -- 

Um abraço

.0. MrBiTs - address@hidden
..0 GnuPG  - 
http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x6EC818FC2B3CA5AB
000 http://www.mrbits.com.br


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

iQEcBAEBCAAGBQJL7SkuAAoJEG7IGPwrPKWr4P8IAKw6YlaGMwgqvcP8V6V1H9WR
stsJ0XR14LiVGa3MlDdfUUYmwhe41uFChocSe3fSdTL+ZloNrmpRXo2H7vSxaLlP
afFv12iQX6x9o6SILrjX/Pq91dt73AP1pv6+znnAZISuEOGq7TWuZsZ24xaJS4xT
wAy75zH1rVA/OQ0HO7mNr6q7HBweYSy1HPt8/UZnLGzTKe/YegZjCPB1S4bOFXMP
Jm17p6SW06FrIcuR3AZ0nyWtZ9mcRgwKSQg5RH7mqedG6oy+xU1xPBcpw05j/zHP
Ve1xyYMtHHhUEdfeSl0iWbJiEpIJo14MN8LMDKGnBJVVuQ0wlu4BcjezC6v0+70=
=++uc
-----END PGP SIGNATURE-----


reply via email to

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