WaBis

walter.bislins.ch

ASP: Performance Tipps für RegExp

ASP Tipps : RegExp Performance | Time/Date | Verschlüsselung

Für das Bearbeiten von regulären Ausdrücken gibt es in VbScript das Objekt RegExp. Bei schlauer Anwendung von RegExp kann man für dieselbe Operation einen Geschwindigkeitsvorteil von mehr als Faktor 13 herausholen.

Messergebnisse

In der folgenden Tabelle stehen die Messwerte für obige Varianten, ermittelt direkt mit diesem Wiki auf zwei meiner Systeme:

  • System 1: Core2Duo 2.4 GHz (Aug. 2009)
  • System 2: i7-4960X @ 3.6 GHz / OC 4.4 GHz, Windows 7 (Jun. 2014)
Core2Duo i7-4960X
Test1 Test2 Test3 Test1 Test2 Test3
Loops/s 12'000 86'000 168'000 8'100 175'000 315'000
Time μs 83 12 6 123 5.7 3.2

Diskussion Core2Duo

Offensichtlich ist das Erzeugen eines RegExp-Objektes realtiv aufwändig. Alleine 71 μs von 83 μs gehen auf dieses Konto. Es lohnt sich also, wo immer möglich ein globales oder ein Member Objekt wiederzuverwenden.

Bei einer Zuweisung eines Pattern zu einem RegExp-Objekt muss dieses Pattern in eine interne Struktur kompiliert werden. Dies hängt natürlich sehr vom Pattern ab, aber in meinem Beispiel hat dies ca. 6 μs benötigt. In dieser Zeit kann das Pattern mit 2 langen Strings verglichen werden (777 und 224 Zeichen).

Wenn man also in einer Programmschleife verschiedene Strings immer wieder mit dem selben Pattern vergleichen muss, lohnt es sich, für jedes Pattern in der Schleife ein eigenes RegExp zu verwenden und die Pattern ausserhalb der Schleife zuzuweisen. Dazu ist es notwendig, das RegExp global anzulegen oder als Member einer Klasse.

Weitere Infos zur Seite
Erzeugt Freitag, 28. August 2009
von test
Zum Seitenanfang
Geändert Samstag, 18. Juli 2015
von wabis