[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RES: [shell-script] Script lento...
From: |
Julio Cezar Neves - DATAPREVRJ |
Subject: |
RES: [shell-script] Script lento... |
Date: |
Fri, 27 May 2005 12:25:20 -0300 |
É Luciano,
em qq linguagem o seu programa seria pesado, em uma linguagem interpretada
então, fica pior. Algumas sugestões:
- Use qdo possível comparações numéricas, p.ex. troque [ "$var" = "1" ] por
[ $var -eq 1 ];
- if [ "$teste" != "" ]; then é indêntico a if [ "$teste" ]; then, porém +
lento;
- Troque awk por cut qdo possível. O awk é muito mais pesado;
- Para aritimética use $((...)), p.ex. troque num_linha_enc=`expr
"$num_linha_enc" - "1"` por num_linha_enc=$(($num_linha_enc - 1));
- Substitua construções do tipo:
if [ "$linhabrancoaux" = "" ]; then
linhabranco=1
fi
por:
[ "$linhabrancoaux" ] || linhabranco=1
[ ]s,
Julio
:wq
| -----Mensagem original-----
| De: Luciano Depierri [mailto:address@hidden]
| Enviada em: terça-feira, 24 de maio de 2005 09:41
| Para: address@hidden
| Assunto: [shell-script] Script lento...
|
|
| Pessoal,
|
| Estou rodando um script aqui mas está muito, muito, muito
| lento, e para ajudar o meu arquivo tem nada menos do que
| 6450044 linhas.
| Eu percebi que quanto menor o arquivo (menos linhas) o output
| é mais rápido. Segue o trecho principal do meu script. Alguem
| tem alguma idéia para "tentar" deixar mais rápido o processo?
| Ou é isso mesmo, quanto mais pesado o arquivo de entrada mais
| lento será o processamento?
| Obs: Se eu rodar de uma só vez as 6450044 linhas, parace que
| estou dando um sleep 2 no processamento de cada linha.
|
| Agradeço antecipadamente.
|
| ...
| qtd_linhas=`wc -l "$path/"saida.marcpl2709 | awk
| '{print $1;}'`
| until [ "$var" = "1" ]; do
| linha=`sed -n "$count"p "$path/"saida.marcpl2709`
| echo "$count" >> $path/ChangeMarc.saida-teste
| campo=`echo "$linha" | awk '{print $1;}'`
| if [ "$campo" = "300" ]; then
| teste=`echo "$linha" | sed -n '/videocassete/p'`
| if [ "$teste" != "" ]; then
| LDRcount=0
| linhabranco=0
| num_linha_enc="$count"
| until [ "$LDRcount" = "1" ]; do
| num_linha_enc=`expr
| "$num_linha_enc" - "1"`
| linha_ant=`sed -n
| "$num_linha_enc"p "$path/"saida.marcpl2709`
| LDR=`echo "$linha_ant" | awk
| '{print $1;}'`
| if [ "$LDR" = "LDR" ]; then
| LDRcount=1
| fi
| done
| until [ "$linhabranco" = "1" ]; do
| linha_reg=`sed -n
| "$num_linha_enc"p "$path/"saida.marcpl2709`
| echo "$linha_reg" >>
| $path/ChangeMarc.saida
| num_linha_enc=`expr
| "$num_linha_enc" + "1"`
| linhabrancoaux=`echo
| "$linha_reg" | awk '{print $1;}'`
| if [ "$linhabrancoaux" = "" ]; then
| linhabranco=1
| fi
| done
| fi
| fi
| if [ "$count" = "$qtd_linhas" ]; then
| var=1
| fi
| count=`expr "$count" + "1"`
| done
| ...
|
|
| --------------------------------------------------------------
| ------------------
| Luciano Depierri
| Analista de Sistemas - NAI-SBI-PUC-Campinas
| Fone: (19) 3735-5845 - Fax: (19) 3735-5818
|
|
|
|
|
|
| [As partes desta mensagem que não continham texto foram removidas]
|
|
|
| ---------------------------------------------------------------------
| Esta lista não admite a abordagem de outras liguagens de
| programação, como perl, C etc. Quem insistir em não seguir
| esta regra será moderado sem prévio aviso.
| ---------------------------------------------------------------------
| Sair da lista: address@hidden
| ---------------------------------------------------------------------
| Esta lista é moderada de acordo com o previsto em
http://www.listas-discussao.cjb.net
---------------------------------------------------------------------
Links do Yahoo! Grupos
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- RES: [shell-script] Script lento...,
Julio Cezar Neves - DATAPREVRJ <=