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

[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




 



reply via email to

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