linux-l: wiedermal perl

Robert C. Helling helling at aei-potsdam.mpg.de
Mo Okt 29 16:17:45 CET 2001


On Mon, 29 Oct 2001, Ulrich Wiederhold wrote:

> 
> $string = "I like music";
> 
> my (@search) = split /\s/, $string;
> 
> foreach my $key (keys %locator_hash) {
>     my $counter = 0;
>     foreach my $word (@search) {
>       if ($key =~ /$word/) {
>       $counter++;
>       }

wie waer hier ein 
	else{last;}
?

>     }
>     if ($counter == $#search+1) {
>     push(@result, $locator_hash{$key});
>     }
> } 

> Soweit funktioniert das. Mein Problem ist, daß die ganze Prozedur
> ziemlich viel CPU-Power schluckt.

Ich weiss ja nicht, wie gross Deine Datenmenge ist und wie gross Dein
String. Ggf koennte es was bringen, die Verschachtelung der beiden foreach
Schleifen zu vertauschen. Dann koenntest Du die regexp
vorcompilieren. Aber wenn die CPU-Last ein Problem ist, solltest Du evtl
darueber nachdenken, das ganze nicht in Perl zu implementieren, sondern zB
in C. Aber ehrlich, Dein Datenbestand muss ja wirklich riesig sein, wenn
Du bei sowas CPU-Last bemerkst (oder: So einen Rechner hatte ich auch
mal).

Robert

-- 
.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oO
Robert C. Helling        Institut fuer Physik
                         Humboldt-Universitaet zu Berlin
print "Just another      Fon +49 30 2093 7964
       stupid .sig\n";	 http://www.aei-potsdam.mpg.de/~helling




Mehr Informationen über die Mailingliste linux-l