Hallo,
| Zitat von McManta: |
| Das mit der Überprüfung des Strings auf Gültigkeit geht mit RegEx sehr einfach |
Das mag sein, aber das Parsing und das Ausführen der RegEx braucht ne ganze Ecke mehr Rechenschritte als meine Implementierung.
D.h. RegEx ist einfach zu implementieren bzw. zu nutzen (bringt das Framework schon mit), aber aus Sicht der Performance ist es aufwendiger.
| Zitat von McManta: |
C#-Code: |
...
text = text.Replace("0x","");
...
|
|
Ein Replace ist auch wieder aufwendiger als ein einfaches Überspringen der ersten 2 Zeichen. Ein Replace erzeugt einen neuen String (inkl. Speicherreservierung, Zeichen kopieren usw.). Von der Tasache das bei Replace der gesammte String mindestens einmal durchsucht werden muss, mal ganz abgesehn.
| Zitat von McManta: |
C#-Code: |
...
if ((text.Length % 2) != 0)
...
|
|
Der Modulo wird intern mit Hilfe von Division errechnet (die genaue Formel hab ich grad nich im Kopf mal, wer 's wissen sollte mal Google/Wiki befragen ;-) ). Division ist eine sehr aufwendige Rechenoperation.
Ein simples Logisches & hingegen sehr sehr viel schneller.
| Zitat von Isaac: |
C#-Code: |
if (text.Substring(0, 2).ToLower().StartsWith("0x"))
text = text.Substring(2);
|
|
Alleine in "text.Substring(0, 2).ToLower()" werden 2 neue Strings erstellt.
Auf derlei Sachen wollte ich eben explizit verzichten.
Das Beachten/Filtern von Leerzeichen, ist jedoch eine Idee die ich mit einbauen könnte. Werde ich mir mal durch den Kopf gehen lassen.
Bei "StartsWith("0x")" kann ich mir vor stellen das es auch noch ein paar Optimierungen geben könnte, da werde ich mir mal anschaun, wie das dass Framework intern gelöst hat und ob was man besser machen könnte.
MfG
TiltonJH