[Cascavel-pm] Readdir com foreach/while

Stanislaw Pusep creaktive em gmail.com
Quarta Abril 11 08:21:31 PDT 2012


Isso só se aplica ao range operator :)
http://perldoc.perl.org/perlop.html#Range-Operators

ABS()



On Wed, Apr 11, 2012 at 11:51, Renato Santos <renato.cron em gmail.com> wrote:

> Até onde eu sei, com ararys, até uma certa versão, o perl gerava a lista
> toda, e depois fazia o foreach, mas acho que foi arrumado no 5.10 (? nao
> vou funçar a docs agora!)
>
>
> Lembro que foreach my $x( (1, 2, 3, (4..20000000))) não aloca os 20000000
> itens na memoria, agora não sei se o processamento de buffers são os mesmos.
>
> Acho que tem otimização sim, pois aparentemente é só sintax que está
> mudando.
>
>
> 2012/4/11 Ednardo Lobo <ednardo em lobo.eti.br>
>
>> Enfim, usar "foreach" para percorrer listas de tamanho variável e
>> indeterminável poderá ser uma grande estupidez além de resultar num
>> desastre.
>>
>> foreach my $f (grep /^[^\.]/.readdir DH) {
>> ...
>> }
>>
>> Já usando "while" mantemos o consumo restrito ao tamanho individual de
>> cada elemento da lista, não importando quantos sejam.
>>
>>
>> while (my $f = readdir DH) {
>>   next if $f =~ /^\./;
>> }
>>
>> Mas será que internamente, quando ambos os códigos são executados pelo
>> Perl, ele não realiza alguma otimização tornando tudo irrelevante?
>>
>> Em 11-04-2012 10:32, Stanislaw Pusep escreveu:
>>
>>  foreach my $f (readdir DH) { ... }
>>>
>>> seria aproximadamente equivalente a
>>>
>>> my @f = readdir DH;
>>> foreach my $f (@f) { ... }
>>>
>>> Ou seja, todos os resultados são pré-carregados e depois enumerados.
>>> Mais lento não fica, mas definitivamente consome mais memória.
>>>
>>> ABS()
>>>
>>
>> --
>>    Ednardo Lobo
>>
>>    www.lobo.eti.br
>> ______________________________**_________________
>> Cascavel-pm mailing list
>> Cascavel-pm em pm.org
>> http://mail.pm.org/mailman/**listinfo/cascavel-pm<http://mail.pm.org/mailman/listinfo/cascavel-pm>
>>
>
>
>
> --
> Saravá,
> Renato CRON Santos
>  http://www.renatocron.com/blog/
> @renato_cron <http://twitter.com/#!/renato_cron>
>
>
>
> _______________________________________________
> Cascavel-pm mailing list
> Cascavel-pm em pm.org
> http://mail.pm.org/mailman/listinfo/cascavel-pm
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/cascavel-pm/attachments/20120411/8cd2130c/attachment-0001.html>


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