Verbessert die Vorkompilierung regulärer Ausdrücke mit „re.compile()' die Python-Leistung?

Linda Hamilton
Freigeben: 2024-11-07 18:05:02
Original
775 Leute haben es durchsucht

Does Pre-Compiling Regular Expressions with `re.compile()` Enhance Python Performance?

Auswirkungen auf die Leistung von Pythons re.compile

In Python bietet das re-Modul Funktionen für die Arbeit mit regulären Ausdrücken. Eine häufig gestellte Frage ist, ob die Verwendung der re.compile-Methode zum Vorkompilieren regulärer Ausdrücke einen Leistungsvorteil bringt.

Verwendung von re.compile vs. Direct Matching

Betrachten Sie die folgenden zwei Codeausschnitte:

h = re.compile('hello')
h.match('hello world')
Nach dem Login kopieren
re.match('hello', 'hello world')
Nach dem Login kopieren

Der erste Codeausschnitt kompiliert den regulären Ausdruck „hello“ mit re.compile() vor und verwendet dann das kompilierte Muster, um den Abgleich durchzuführen. Das zweite Snippet verwendet einfach die Funktion re.match() direkt, um den Abgleich durchzuführen.

Anekdotische Beweise und Codeanalyse

Einige Benutzer berichten, dass sie keine beobachtet haben erheblicher Leistungsunterschied zwischen der Verwendung von re.compile() und direktem Matching. Dies wird durch die Tatsache unterstützt, dass Python reguläre Ausdrücke intern kompiliert und bei ihrer Verwendung zwischenspeichert (einschließlich Aufrufe von re.match()).

Die Codeanalyse des re-Moduls in Python 2.5 zeigt Folgendes:

def match(pattern, string, flags=0):
    return _compile(pattern, flags).match(string)

def _compile(*key):
    cachekey = (type(key[0]),) + key
    p = _cache.get(cachekey)
    if p is not None: return p

    # Actual compilation on cache miss

    if len(_cache) >= _MAXCACHE:
        _cache.clear()
    _cache[cachekey] = p
    return p
Nach dem Login kopieren

Dies zeigt, dass der Hauptunterschied zwischen der Verwendung von re.compile() und dem direkten Abgleich im Timing des Kompilierungsprozesses liegt. re.compile() erzwingt die Kompilierung, bevor der Abgleich durchgeführt wird, während der direkte Abgleich den regulären Ausdruck intern kompiliert, wenn die Match-Funktion aufgerufen wird.

Fazit

Während die Vorkompilierung regulärer Ausdrücke mit re.compile() scheinbar keine nennenswerten Leistungssteigerungen bietet, kann sie für die Organisation und Benennung wiederverwendbarer Muster nützlich sein. Es ist jedoch wichtig zu wissen, dass Python kompilierte reguläre Ausdrücke intern zwischenspeichert, was möglicherweise den wahrgenommenen Nutzen der Vorkompilierung verringert.

Das obige ist der detaillierte Inhalt vonVerbessert die Vorkompilierung regulärer Ausdrücke mit „re.compile()' die Python-Leistung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage