Einzelnen Beitrag anzeigen

liftoff

Registriert seit: 6. Jun 2012
Ort: Frankfurt am Main
11 Beiträge
 
Delphi XE Enterprise
 
#1

TPerlRegEx - Performance

  Alt 19. Jun 2012, 13:31
Wie ich ja bereits hier

http://www.delphipraxis.net/168816-t...-overflow.html

beschrieben habe, stelle ich eine Klassenbibliothek nach Unicode um, die reichlich Gebrauch von regulären Ausdrücken macht.

In den Sourcen gibt es etliche Stellen, an denen implizit TPerlRegEx instanziert und nach Ausführung sofort wieder gelöscht wird. Das war früher mit einem alten PCRE-Wrapper auch kein Problem. In TPerlRegEx.create wird jedoch pcre_maketables aufgerufen. Da geht es dann los.

[spekulier]
Nachdem ich mir einen Wolf gegoogelt habe, scheint dieser Aufruf je nach Locale-Einstellung vier Tabellen von Zeichen zu erzeugen, die dann später für eine schnellere Umsetzung von Zeichenklassen in einem regulärem Ausdruck (\d \w usw.) dienen.
[\spekulier]

Überschreibt man den Konstruktor, ruft den geerbten nicht auf und macht ansonsten alle Initialisierungen, bleibt die Tabelle auf nil und es werden interne Defaulttabellen verwendet, deren Inhalt zur Kompilierzeit der C-Sourcen bestimmt wird. Ist dreimal so schnell und funktioniert auch fehlerfrei. In meinem alten Wrapper wurde dies ebenso gehandhabt. Trotzdem hätte ich gerne genauer verstanden, was es mit pcre_maketables im Zusammenhang mit den Locale-Einstelllungen auf sich hat.

Gibt es hier wen, der sich mit pcre-Internas gut auskennt oder von einem Forum weiß, in dem man dazu Fragen stellen könnte?
  Mit Zitat antworten Zitat