Thread Regexes: Geschwindigkeitsoptimierung
(13 answers)
Opened by GoodFella at 2007-04-06 19:31
Mein Script schafft zu Zeit um die 120 Zeilen / Sekunde ->
Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 # Im VORNAMEN suchen: if (($ba_config{'search_prename'} == 1) and ($ba_config{'vorname_col'} <= $#top_headlines)) # zus.: Wenn Vorname und Nachname NICHT zusammen { #Titel + Vorname + Namensvorsatz: if ($ba_data{'vorname'} =~ /^\s*($search_pattern{'titel'})\s*(.*?)[ ]+($search_pattern{'name_vorsatz'})\s*$/sio) { ($ba_data{'titel'}, $ba_data{'vorname'}, $ba_data{'name_vorsatz'}) = ($1, $2, $3); push(@ba_info, 'Titel und Namensvorsatz im Vornamen'); } #Titel + Vorname: elsif ($ba_data{'vorname'} =~ /^\s*($search_pattern{'titel'})\s*(.*)\s*$/sio) { ($ba_data{'titel'}, $ba_data{'vorname'}) = ($1, $2); push(@ba_info, 'Titel im Vornamen'); } #Sekundärtitel + Vorname + Namensvorsatz: elsif ($ba_data{'vorname'} =~ /^\s*($search_pattern{'titel_secondary'})\s*(.*?)[ ]+($search_pattern{'name_vorsatz'})\s*$/sio) { ($ba_data{'titel_secondary'}, $ba_data{'vorname'}, $ba_data{'name_vorsatz'}) = ($1, $2, $3); push(@ba_info, 'Sekundärtitel und Namensvorsatz im Vornamen'); } #Sekundärtitel + Vorname: elsif ($ba_data{'vorname'} =~ /^\s*($search_pattern{'titel_secondary'})\s*(.*?)\s*$/sio) { ($ba_data{'titel_secondary'}, $ba_data{'vorname'}) = ($1, $2); push(@ba_info, 'Sekundärtitel im Vornamen'); } ..füge ich jedoch dies hier noch mit ein: Code (perl): (dl
)
1 2 3 4 5 6 7 8 #Vorname + Titel + Namensvorsatz: elsif ($ba_data{'vorname'} =~ /^\s*(.*?)[ ]+($search_pattern{'titel'})\s*$search_pattern{'name_vorsatz'}$/sio) { ($ba_data{'vorname'}, $ba_data{'titel'}, $ba_data{'name_vorsatz'}) = ($1, $2, $3); push(@ba_info, 'Namensvorsatz und Titel im Vornamen'); } reduziert sich die Geschwindigkeit auf 50 Zeilen / Sekunde. Ich habe die Regexes vorher testweise rausgenommen, die Geschwindigkeit hatte sich beim Hinzufügen dieser um max. 5% vermindert; irgendwas an dem letzen Regex jedoch macht das Teil sehr lahm. Habe auch schon mit Benchmark rumgespielt, ohne Erfolg. Den Artikel hier http://www.ccl4.org/~nick/P/Fast_Enough/ habe ich auch schon durch. Achja, %search_pattern enthält strings der Sorte 'von und zu|van|van den|van der' usw. Jemand eine Idee, wie ich das schneller machen könnte?\n\n <!--EDIT|GoodFella|1175873678--> |