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

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

Re: Problemas com performance de script shell


From: mrgraucio
Subject: Re: Problemas com performance de script shell
Date: Mon, 14 Nov 2011 22:24:39 -0000
User-agent: eGroups-EW/0.82

Opa Rodrigo, valeu!

2001201110313947J555555400362682011103115254000000000000051014000100010100100000
300198513700000510140000001425096004889043517
2001201110313947J555555600402682011103115324200000000000017569000100010100100000
334196513700000175691092251759522938018963000
2001201110313947J545555200432682011103115345600000000000020222000100010100100000
334193513700000202221092251759452938018963000
2001201110313947J555555500412682011103115332000000000000022981000100010100100000
334191513700000229811092251759782938018963000
2001201110313947J554565500422682011103115340200000000000015210000100010100100000
334199513700000152101092251759602938018963000



--- Em address@hidden, Rodrigo Boechat <rodrigo.boechat.tenorio@...> escreveu
>
> Por favor, mande um exemplo com valores fictícios do arquivo de entrada.
> Três conjuntos de linhas "2" e "3" seria suficiente.
> 
> Rodrigo Boechat
> 
> Em 14-11-2011 19:42, mrgraucio escreveu:
> >
> > 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!
> >
> > 
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>




reply via email to

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