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