[Cascavel-pm] otimização em manipulação de texto

Rodrigo Fernandes fernandesrp em yahoo.com
Terça Dezembro 4 12:12:12 PST 2007


--- Nelson Ferraz <nferraz em gmail.com> wrote:

> > Basicamente, abro o arquivo, coloco o conteúdo
> numa
> > array através do operador diamante, pesquiso
> > linha-a-linha o meu fenômeno. Quando encontrado,
> > modifico-o, volto a salvar em disco e inicio tudo
> > novamente.
> 
> Se você estiver lidando com arquivos grandes, é
> melhor fazer as
> substituições linha a linha, ou parágrafo a
> parágrafo, do que
> carregá-lo inteiro na memória.
> 
> Isto é:
> 
>     while ( my $line = <> ) {
> 
>         # do something with $line
> 
>     }

Isto já é o que acontece.

> 
> > Bem, Perl é uma ótima linguagem, principalmente,
> para
> > mim, por eu não precisar declarar todas as
> variáveis,
> > mas Perl não deve ser à prova de estupidez, e acho
> que
> > meu código está um pouquinho estúpido.
> 
> Você pode começar a torná-lo mais inteligente, se
> abrir mão do "não
> precisar declarar todas as variáveis".
> 
> Ou seja: inclua um "use strict" e um "use warnings"
> no começo do seu programa.
> 
> É bem provável que, quando você fizer isso, seu
> programa comece a
> apresentar mensagens de erro. É para isso que estas
> diretivas servem,
> para apontar os problemas, de forma que você possa
> corrigi-los.
> 
> Portanto, comece os seus programas com:
> 
>     #!/usr/bin/perl
> 
>     use strict;
>     use warnings;
> 
>     while ( my $line = <> ) {
>         # ...
>     }
>

Iso já é o que acontece... a não ser pelas warnings,
que depois de um certo tempo foram arbitrariamente
caladas.

 
> > Gostaria de saber a melhor forma de otimizá-lo.
> > Acredito que um caminho seria fazer todas as
> > alterações e salvar em disco apenas no final.
> Porém,
> > meus dados, eventualemnte, podem chegar a 500 Mb e
> > centenas de arquivos plain text, ou MUITO mais. Há
> > alguma forma "perlniana" de automatizar o fluxo
> > memória/disco para fins de otimização? Algo que
> > monitore a quantidade de memória necessária e
> decida
> > onde os dados serão armazenados. Ou nada disto é
> > necessário?
> 
> Na minha opinião, é melhor lidar com pedaços menores
> de texto, ao
> invés de tentar colocar tudo na memória de uma vez.
> 
> Se você nos contar que tipo de dados está lidando --
> ou melhor ainda.
> se puder nos fornecer um exemplo -- talvez possamos
> ajudá-lo melhor.

Obrigado pelo interesse, Nelson. Os arquivos são todos
plain text, de tamanhos bastante diferentes. Desde o
input, arquivos intermediários e o output, aparecem
bichos de 1 kb a 10 MB, aproximadamente. São arquivos
da biblioteca digital
<http://bibdigital.inf.ufsc.br/bdnupill/> 

Grato,

R. Fernandes

> 
> []s
> 
> Nelson
> _______________________________________________
> Cascavel-pm mailing list
> Cascavel-pm em pm.org
> http://mail.pm.org/mailman/listinfo/cascavel-pm
> 



      ____________________________________________________________________________________
Never miss a thing.  Make Yahoo your home page. 
http://www.yahoo.com/r/hs



Mais detalhes sobre a lista de discussão Cascavel-pm