Entwickler-Ecke
Basistechnologien - Regex-Performance-Frage???
bergrath - Mi 09.01.08 12:33
Titel: Regex-Performance-Frage???
Hi.
Ich habe verschiedene Regexes, die sich sehr stark unterscheiden in ihrer Geschwindigkeit. Da sie eigentlich ziemllich ähnlich sind im Aufbau und in ihrer Länge ist es mir ein Rätsel wieso fast alle ein Ergebnis innerhalb von Sekunden ausspucken und eine andere Regex fast 20 Minuten braucht um ein Ergebnis zurück zu geben. Ich poste hier mal die verschiedenen Regexes. Die letzte Regex ist die, die 20 Minuten braucht.
Vielleicht kann mir ja jemand von euch sagen woran dieser gravierende Performance-Unterschied liegt. Vielen Dank im Voraus.
Regexes:
("([2-8][0-9]|[-]*[S][A-Z0-9]{3})([ ]*|[A-Z0-9]*)([*][2-8A-Z][0-9A-Z]{3})*[*+-]*([2-8][A-Z0-9]{3})*([+-]*[S][W][A-Z0-9]{2})*[*]*([S][A-Z0-9]{3}[*]*([2-8][0-9][A-Z0-9]))*[=][S][A-Z0-9]{3}([$]?)")
("[-]*[(]([2-8][0-9]|([2-8][0-9A-Z]{3}))[,][0-9A-Z ]*([*][0-9A-Z ]*)*[)][=][S][A-Z0-9]{3}")
("([2-8][0-9][0-9A-Z ]|[-]*[S][A-Z0-9 ]{3})([*][2-8][0-9][0-9A-Z ]|([S][A-Z0-9]){3})*[=][S][A-Z]{3}")
("[2-8][0-9][0-9A-Z]*[*+-]*([2-8][0-9][0-9A-Z][*+-])*([(][2-8][0-9]([0-9][0-9])*[,]([0-9A-Z ]*[*]*)+[)])[=][S][A-Z]{3}")
("[+-]*([S][A-Z][A-Z0-9][A-Z0-9]|[2-8][0-9][0-9A-Z])([*+-][S][A-Z][A-Z0-9][A-Z0-9]|[2-8][0-9A-Z ]{3})*[=][S][A-Z][A-Z0-0][A-Z0-9]")
("([(]([2-8][0-9][0-9][0-9]|[2-8][0-9])[,]([0-9A-Z]*[*]*)+[)])([*+]*([(]([2-8][0-9][0-9][0-9]|[2-8][0-9])[,]([0-9A-Z]*[*]*)+[)]))*[=][S][A-Z]{3}")
Wie gesagt: Die letzte Regex ist die, die 15-20 Minuten braucht. Die anderen nur Sekunden. Woran könnte das liegen???
MfG
Moderiert von Christian S.: Topic aus C# - Die Sprache verschoben am Mi 09.01.2008 um 13:53
Christian S. - Mi 09.01.08 17:27
Leute, ist gut jetzt :roll:
Ihr tut ja so, als hätte bergrath gerade einen Mord begangen ...
bergrath - Fr 11.01.08 08:28
Hi Leute.
Ja so kommt es mir auch vor, als hätte ich etwas kriminelles getan. Dabei habe ich nur versucht so schnell wie möglich zu einer Antwort zu kommen.
Ich wollte niemandem den Tag versauen durch meine Doppelpostings. Ich konnte ja nicht ahnen, dass nach meinen Postings in verschiedenen Foren gesucht wird, um mir diese zu schließen.
Leider bin ich durch diese ganzen geschlossenen Threads noch nicht zu einer Beantwortung meiner Frage bzw. meiner Fragen geführt. Die Postings bezogen sich auch nicht immer auf das gleiche Thema, sondern hatten verschiedene Fragen.
Also bleibe ich jetzt bei meinen Threads und eröffne keine neuen mehr.
MfG
Bergrath der böse Doppelposter
bergrath - Fr 11.01.08 11:18
Hi.
Kommen wir nochmal zurück auf die ursprüngliche Frage am Anfang des Threads.
Kann mir dazu jemand was sagen??????? (oder wird hier mehr auf die kritischen Bemerkungen geachtet und die ursprüngliche Frage übersehen ????)
MfG
bakachan - Fr 11.01.08 11:26
Ich bin der gleichen Meinung wie svenson(der dir gestern mittag darauf schon im myCSHARP-Forum geantwortet hat --> ja du solltest dir auch mal die antworten auf deine posts genau durchlesen wenn du sie schon in etlichen foren mehrmals postest)
das Problem sind wahrscheinlich die "*[*]*" konstruktionen da diese dem Regex sehr viel Spielraum und somit rechenaufwand geben. Du solltest versuchen präzisere vorgaben im regex zu verwenden.
bergrath - Fr 11.01.08 11:45
hi.
ich lese mir die antworten schon durch, die ich bekomme. Aber ich war der Meinung, daß es an etwas anderem liegen könnte.
Ich habe andere Regexes, die sehr viel schneller sind und ähnlich formuliert sind.
Aber ich werde mal versuchen die regex umzuformulieren.
Danke.
MfG
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!