[Date Prev][Date Next][Thread Prev][Thread Next] [Search] [Date Index] [Thread Index]

Re: [MacPerl] Speed question



"Andrew M. Langmead" wrote:

> On Wed, May 31, 2000 at 09:49:05PM +0200, Giorgio Valoti wrote:
>
> > *but*: until the 'for' is below 4000 iterations, the script finish in 2
> > seconds, more or less; if I repeat the loop 5000 times I have to wait 30
> > secs!
> > Am I missing something ( as usual)?
>
> I'm guessing that the problem is with this part of the code:
>
> > foreach my $key (keys %database ) {
> >   print DUMP "$key\n". ("=" x (length($key)+1))."\n";
> >   print DUMP "$database{$key}\n\n";
> > }
> >
>
> The foreach loop evaluates its control expression in a list context,
> so the keys function will create a (potentially large) temporary list
> of all the keys in memory and iterate over the temporary list.
>
> You might be better of grabbing on key at a time by using the iterator
> built into the scalar context version of keys().
>
> while(defined(my $key = keys %database) ) {
>   print DUMP "$key\n". ("=" x (length($key)+1))."\n";
>   print DUMP "$database{$key}\n\n";
> }
>
> --
> Andrew Langmead

uhm... I get this error:
# Use of uninitialized value.
File 'Macintosh HD:Desktop Folder:testDB_file.pl'; Line 33 which is the
#
  print DUMP "$database{$key}\n\n";
#
line
I'm a newbie am I missing something obvious?
bye
--
Giorgio Valoti

MagneticMedia Network


# ===== Want to unsubscribe from this list?
# ===== Send mail with body "unsubscribe" to macperl-request@macperl.org