[Cascavel-pm] Readdir com foreach/while
Ednardo Lobo
ednardo em lobo.eti.br
Quarta Abril 11 07:43:46 PDT 2012
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
Mais detalhes sobre a lista de discussão Cascavel-pm