Thread Regexes: Geschwindigkeitsoptimierung (13 answers)
Opened by GoodFella at 2007-04-06 19:31

GoodFella
 2007-04-06 20:44
#75721 #75721
User since
2007-01-09
192 Artikel
BenutzerIn
[default_avatar]
[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-->

View full thread Regexes: Geschwindigkeitsoptimierung