<div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Aproveitando que tocamos nesse método... eu sempre uso dessa forma:<br><br>&lt;code&gt;<br>
foreach (readdir $dir) {<br>&nbsp;&nbsp; (...)<br>}<br>&lt;/code&gt;<br><br>A documentação do readdir diz que quando avaliado em contexto escalar<br>retorna o próximo item ou undef caso não existam mais itens. Em contexto<br>de lista retorna todos os elementos encontrados.
<br><br>A primeira pergunta é: qual dos dois métodos é mais rápido? (isso pode<br>ser respondido com um benchmark simples) e a segunda é:<br><br>existe diferença no uso de memória nas duas maneiras?<br><br>A princípio parece óbvio que sim, pois colocar uma lista inteira na
<br>memória gasta mais do que pegar item a item, porém o contexto de lista é<br>no foreach, daí, a princípio o compilador poderia fazer essa otimização<br>e pegar de um em um.</blockquote><div><br>Creio que o interpretador não faz esta optimização. Ele irá executar o readdir() em contexto de lista, que internamente executará algo como 'if (wantarray) { ... }' e devolverá uma lista para o foreach(), que a iterará normalmente. Se alguém aí souber algo diferente, nos deixe ficar sabendo :) 
<br><br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Para medir tempo de execução tenho o Benchmark... e para medir o uso de<br>memória?
<br><br>Eu poderia criar um diretório com milhões de entradas e executar o<br>script pra esse diretório, e então medir o tamanho do segmento de dados<br>do processo, mas isso é tão impreciso quanto colocar pra rodar com o
<br>'time' do bash (em linux) querendo medir tempo.<br>Alguém conhece um módulo similar pra medir uso de memória? Buscando por<br>'memory usage' na CPAN só achei o Benchmark::Harness::MemoryUsage<br>&lt;<a href="http://search.cpan.org/%7Eglennwood/Benchmark-Harness-1.07/lib/Benchmark/Harness/MemoryUsage.pm#Benchmark%3A%3AHarness%3A%3AMemoryUsage">
http://search.cpan.org/%7Eglennwood/Benchmark-Harness-1.07/lib/Benchmark/Harness/MemoryUsage.pm#Benchmark%3A%3AHarness%3A%3AMemoryUsage</a>&gt;,<br>mas não sei até onde ele é funcional (não tem documentação e é de 2004).<br>
<br>E alguém já fez essa comparação que disse acima?</blockquote><div><br>Eu particularmente nunca fiz isso.<br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Valeu!<br><br>Gilmar.<br>- Salvador Perl Mongers<br>_______________________________________________<br>Cascavel-pm mailing list<br><a href="mailto:Cascavel-pm@pm.org">Cascavel-pm@pm.org</a><br><a href="http://mail.pm.org/mailman/listinfo/cascavel-pm">
http://mail.pm.org/mailman/listinfo/cascavel-pm</a><br></blockquote></div><br><br clear="all"><br>-- <br>Igor Sutton Lopes<br>