[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Problemas com performance de script shell
From: |
MrBiTs |
Subject: |
Re: [shell-script] Problemas com performance de script shell |
Date: |
Mon, 14 Nov 2011 21:23:25 -0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:7.0.1) Gecko/20110929 Thunderbird/7.0.1 |
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
On 11/14/2011 07:42 PM, mrgraucio wrote:
> Boa noite galera!
>
> Estou com um problema na leitura de arquivos, classificação desses dados e
> armazenamento em banco de dados. Tenho um arquivo
> que tem em torno de 4 mb com informações sobre a produção de uma determinada
> empresa. Nele tenho linhas que iniciam com o
> número 2 e complementadas com linhas iniciadas pelo número 3. Basicamente
> transformo as linhas iniciadas por 2 e 3 em uma só. A
> linha iniciada por 2 tem sempre 80 caracteres, a iniciada por 3 varia de
> acordo com o tipo do produto em questão. Faço a
> separação por serviços de acordo com o número de caracteres da linha. Ex.:
>
> for a in $(grep -B 1 '^3' $ARQ | sed 's/ //g' | sed '/--/d' | sed -e
> "N;s/\n$3/3/g"); do /* FAÇO A LINHA COMPLEMENTAR, DE
> INICIO 3, VOLTAR UMA LINHA ACIMA, AO FINAL DA LINHA DE INÍCIO 2. ESSE CARA
> DEMORA BEM POUCO */
>
> if [ $(wc -c <<<$a) -eq <num de caracteres> ]; then /* CLASSIFICAÇÃO DE
> ACORDO COM NUMERO DE CARACTERES */
>
> if [ $(cut -c26-31) -eq 109 ]; then /* ESSES CARACTERES ME DÃO O CÓDIGO DO
> PRODUTO, CASO ALGUMA LINHA TENHA O MESMO NÚMERO DE
> CARACTERES MAS NÃO SEJA O MESMO PRODUTO */ var1=$(cut -c2-10 <<<$a)
> var2=$(cut -c11-15 <<<$a) varn=$(cut -cnn-nn <<<$a) fi
>
> fi
>
> done
>
>
> Porém está demorando em torno de 25 minutos para terminar a classificação dos
> dados.
>
> Há alguma forma de eu conseguir executar vários loops de uma só vez, fazendo
> algum fork ou algo do gênero? Procurei em vários
> lugares também a respeito de como fazer multi-processamento dessas tarefas
> para melhorar a distribuição das tarefas entre
> threads do CPU (Core2Quad) mas também cheguei no fim da linha e não consegui
> nada!
>
> O arquivo é executado a partir de uma tmpfs, acreditei ser melhor para ter
> maior velocidade de leitura.
>
> Alguém tem uma luz de como deixar este processo mais rápido?
>
> Grato e muito obrigado!
Você não precisa de engenharia de foguetes para resolver seus problemas. Seja
simples.
Esses cuts estão matando a performance do seu script. É simples notar que a
cada linha do arquivo você iniciará um subshell para
executar o cut 3 vezes. Você tem idéia do custo que isso é para a CPU ? Mesmo
as CPUs mais rápidas de hoje ainda são limitadas por
I/O e outras nuances.
Prefira trabalhar com substrings. Talvez algo assim:
if [ ${a:25:6} -eq 109 ] ; then
Aqui pegamos a string a, do seu 26o caracter, os próximos 6, que vão chegar no
caracter 31.
Os cut dentro do if também podem ser substituídos pelo mesmo esquema
var1=${a:1:10}
e assim por diante.
Garanto que a performance vai melhorar MUITO.
- --
LLAP
.0. MrBiTs - address@hidden
..0 GnuPG -
http://keyserver.fug.com.br:11371/pks/lookup?op=get&search=0x6EC818FC2B3CA5AB
000 http://www.mrbits.com.br
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
iQEcBAEBCAAGBQJOwaLtAAoJEG7IGPwrPKWrYA0IALNWLBWSbi2FXRAkV5zMcaAh
bydzS57NN1Jcl4uGmd0TH/YaV1c35Se7Fbq3lu3VA/8x6J+sAYMJlMwtyIWZlcKK
JOe2BaZs+R+lQtWhFnta/XtN4zMjGiR2rkNQ/W2IDZGXrmhT8DWxbynFRY5aTTtz
NpGcb628xR0c3US12NZJSPSZM20YA2fAF2oWy28Z/33TPDAgxg1s9nGdCCrRXKoW
6ay+EwwZnKQxBQ+gIyySlHx+cTKQKXbw2wQc8OVV/IrGhZEyvfveeif0lvY/6btI
JUFJ4hs8SjhUgFnzYpIRoY9sN3TTxIEizMTLZl0CGdGWSn5Z1jXUcoI8Fp4ELc4=
=IrYF
-----END PGP SIGNATURE-----
- Re: Problemas com performance de script shell, (continued)
- Re: Problemas com performance de script shell, mrgraucio, 2011/11/14
- Re: [shell-script] Re: Problemas com performance de script shell, Rodrigo Boechat, 2011/11/15
- Re: Problemas com performance de script shell, mrgraucio, 2011/11/16
- Re: [shell-script] Re: Problemas com performance de script shell, Rodrigo Boechat, 2011/11/16
- Re: [shell-script] Re: Problemas com performance de script shell, Julio C. Neves, 2011/11/16
- Re: Problemas com performance de script shell, mrgraucio, 2011/11/16
- Re: Problemas com performance de script shell, mrgraucio, 2011/11/16
- Re: [shell-script] Re: Problemas com performance de script shell, Julio C. Neves, 2011/11/16
- Re: Problemas com performance de script shell, mrgraucio, 2011/11/16
- Re: [shell-script] Re: Problemas com performance de script shell, Julio C. Neves, 2011/11/17
Re: [shell-script] Problemas com performance de script shell,
MrBiTs <=