[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