re (RegEx) Performance: Ist re.compile() schneller?
Verfasst: Sonntag 4. März 2007, 11:23
Ich durchwandere eine Datei zeilenweise und prüfe jede Zeile mit einem RegEx. Ich frage mich gerade, ob es schneller geht, wenn man einmal am Anfang die benötigten RegEx-Pattern erzeugt:
und dann in der Schleife mit diesen "vor-compilierten" Pattern arbeitet:
Oder macht es keinen Unterschied zu dem hier:
Man muss auch Dateien mit einigen zehntausend Zeilen berücksichtigen. Ich denke, dass ein `re.search(pattern, line)` jedesmal wieder intern ein `re.compile(pattern)` auslöst. Bei nur wenigen Suchmustern wäre es Blödsinn, diese jedesmal neu zu compilieren, oder?
Code: Alles auswählen
spam = re.compile("^spam$")
eggs = re.compile("^eggs$")
Code: Alles auswählen
for line in lines:
if spam.search(line):
#it's a spam line!
pass
elif eggs.search(line):
# it's an eggs line!
pass
else:
# ignore this line
Code: Alles auswählen
for line in lines:
if re.search("^spam$", line):
#it's a spam line!
pass
elif re.search("^eggs$", line):
# it's an eggs line!
pass
else:
# ignore this line