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!)<div><br></div><div><br></div><div>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.</div>

<div><br></div><div>Acho que tem otimização sim, pois aparentemente é só sintax que está mudando.</div><div><br><div><br><div class="gmail_quote">2012/4/11 Ednardo Lobo <span dir="ltr"><<a href="mailto:ednardo@lobo.eti.br">ednardo@lobo.eti.br</a>></span><br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Enfim, usar "foreach" para percorrer listas de tamanho variável e indeterminável poderá ser uma grande estupidez além de resultar num desastre.<br>


<br>
foreach my $f (grep /^[^\.]/.readdir DH) {<br>
...<br>
}<br>
<br>
Já usando "while" mantemos o consumo restrito ao tamanho individual de cada elemento da lista, não importando quantos sejam.<div class="im"><br>
<br>
while (my $f = readdir DH) {<br></div>
   next if $f =~ /^\./;<br>
}<br>
<br>
Mas será que internamente, quando ambos os códigos são executados pelo Perl, ele não realiza alguma otimização tornando tudo irrelevante?<br>
<br>
Em 11-04-2012 10:32, Stanislaw Pusep escreveu:<div class="im"><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
foreach my $f (readdir DH) { ... }<br>
<br>
seria aproximadamente equivalente a<br>
<br>
my @f = readdir DH;<br>
foreach my $f (@f) { ... }<br>
<br>
Ou seja, todos os resultados são pré-carregados e depois enumerados.<br>
Mais lento não fica, mas definitivamente consome mais memória.<br>
<br>
ABS()<br>
</blockquote>
<br></div><div><div></div><div class="h5">
-- <br>
    Ednardo Lobo<br>
<br>
    <a href="http://www.lobo.eti.br" target="_blank">www.lobo.eti.br</a><br>
______________________________<u></u>_________________<br>
Cascavel-pm mailing list<br>
<a href="mailto:Cascavel-pm@pm.org" target="_blank">Cascavel-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/cascavel-pm" target="_blank">http://mail.pm.org/mailman/<u></u>listinfo/cascavel-pm</a><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div><font size="1" color="#333333">Saravá,</font></div><div><font size="1" color="#333333">Renato CRON Santos</font></div><div><div style="text-align:right">

<font size="1" color="#333333"><a href="http://www.renatocron.com/blog/" target="_blank">http://www.renatocron.com/blog/</a></font></div></div><div style="text-align:right"><font size="1" color="#333333"><a href="http://twitter.com/#!/renato_cron" target="_blank">@renato_cron</a><br>

</font></div><div style="text-align:right"><br></div><br>
</div></div>