[SP-pm] Busca eficiente em array.
Luis Motta Campos
luismottacampos at yahoo.co.uk
Fri Sep 18 07:40:57 PDT 2009
Solli Honorio wrote:
> 2009/9/16 Luis Motta Campos <luismottacampos em yahoo.co.uk>
>> Tente usar iteradores para ajudar a aliviar a memória: olha o
>> módulo Iterator no CPAN, e dá uma olhada no capítulo 5 do Higher
>> Order Perl, do Mark Jason Dominus.
>>
>
> iteradores são interessante, mas se o array já estiver populado, e
> com isto já utilizando todo o swap, onde está o ganho ?
Bom, neste caso, você já perdeu o bonde: o objetivo de usar iteradores é
não popular o array em primeiro lugar. Quando você precisa do próximo
ítem, vai buscá-lo.
Por exemplo:
#!perl
use Iterator;
{
my $count = -2;
my $even = Iterator->new( sub { $count+=2 } );
}
# Imprime todos os pares positivos. TODOS.
# Pode ser que demore, eu recomendo esperar sentado. ;)
print $even->value while ( $even->isnt_exhausted );
__END__
Agora, tenta escrever o mesmo código, sem usar iteradores, e populando
um array com os resultados... acho que isso vai te dar uma boa idéia da
dimensão do problema. ;)
Putamplexos.
--
Luis Motta Campos is a software engineer,
Perl Programmer, foodie and photographer.
More information about the SaoPaulo-pm
mailing list