Dienstag, 22. April 2008

string.Compare versus ==

leftString.ToLower() == rightString.ToLower()

vs

int string.Compare(string leftString, string rightString, bool ignoreCase)


Zusammenfassung:
- ToUpper()/ToLower() ist 3x langsamer als string.Compare, durch das Erzeugen und Entfernen von temporäreren Strings
- string.Compare prüft auch gleich noch die "Rangordnung": == 0 wenn identisch, == 1 wenn links "größer" als rechts, == -1 wenn links "kleiner" als rechts
- string.Compare kann man eine "Cultural Information" mitgeben (Sortierungsrelevant, falls in einem anderen "Kulturkreis", in dem man vor hat zu deployen, Zeichen anders sortiert werden sollte, man aber seine "eigene" Reihenfolge erwartet, oder auch eben nicht)

Mal abgesehen von der Effizenz Steigerung, string.Compare hab ich mir persönlich aus einem ganz anderen Grund ausgesucht neben Performance: string.Compare ist es egal wenn einer oder beide strings "null" ist, ToUpper()/ToLower(), die eine konkrete Instanz benötigen, nicht (NullReferenceException)
Sprich, man spart sich auch noch gleich ein abprüfen der beiden Parameter, Effizenz in allen Bereichen, Performance, Speicher und Tippen ... wunderbar ;)

Keine Kommentare: