Thread Regexes: Geschwindigkeitsoptimierung
(13 answers)
Opened by GoodFella at 2007-04-06 19:31
[quote=PerlProfi,06.04.2007, 17:39]Vielleicht bringt es ja was ein paar reguläre Ausdrücke in Variablen zu packen, dann müssten sie nicht immer neu ausgewertet werden.
Zum Beispiel könntest du aus: 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'); } Folgendes machen: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 # %search_pattern ist bereits bekannt, # dieser Teil steht irgendwo, so das er nur einmal ausgeführt wird my $regexp = qr/^\s*(.*?)[ ]+($search_pattern{'titel'})\s*$search_pattern{'name_vorsatz'}$/sio; # dann später dein vergleich #Vorname + Titel + Namensvorsatz: elsif ($ba_data{'vorname'} =~ $regexp) { ($ba_data{'vorname'}, $ba_data{'titel'}, $ba_data{'name_vorsatz'}) = ($1, $2, $3); push(@ba_info, 'Namensvorsatz und Titel im Vornamen'); } Bin mir aber nicht sicher ob das wirklich eine große Verbesserung wäre. MfG[/quote] Ich werde es probieren, aber: Ist das nicht genau das, was der o-Modifier tut? [EDIT] Leider wird das Script dadurch langsamer. MIT qr// --> 49,1 Zeilen/s OHNE qr// --> 50,4 Zeilen/s O_o Also irgendwie ... versteh einer die Perl Regex Machine... Habe mal ?: in Gruppierungen eingefügt und die Geschwindigkeit hat sich halbiert. Also ab sofort nutze ich nur noch benchmark dafür und verlasse mich nicht auf meinen logischen Menschenverstand. Jemand noch eine Idee?\n\n <!--EDIT|GoodFella|1175879270--> |