Silverlight 4 unter XP: kleines Ups bei String.IndexOf

In einer Lösung werden auf eine Benutzereingabe hin ca. 10.000 (eher weniger) Zeichenketten (einige kurz, einige länger, aber im Mittel sicher nicht mehr als 200 Zeichen) darauf untersucht, ob sie eine andere Zeichenkette (im Beispiel 7 Zeichen) enthalten. Dazu wird String.IndexOf verwendet. Unter Vista geht das so schnell, dass man praktisch keine Verzögerung zwischen Beginn der Suche und dem Ergebnis sieht – daher hatte ich für den einfachen Test auch nicht nach eleganteren Möglichkeiten der Suche Ausschau gehalten. Bei gleicher Hardware unter XP dauert die Operation insgesamt aber etwa 30 (!!!) Sekunden – ich schätze mal, mindestens ein Faktor 100 langsamer.

Um auszuschliessen, dass es an den Daten liegt, habe ich das IndexOf naiv über ToCharArray() und einen wirklich primitiven Suchlauf gemacht – einfacher geht es nicht: erstes Zeichen des Suchbegriffs suchen und schauen, ob die Folgezeichen stimmen und wenn nicht ein Zeichen weiter neu suchen etc. Schlechter kann die Silverlight Implementierung eigentlich nicht sein – ist sie aber: hier gibt es nun auch unter XP keine Verzögerung mehr!

Dies als kleine Warnung: selbst auf Microsoft Plattformen scheint Silverlight nicht so furchtbar plattformunabhängig zu sein und hier geht es um eine primitive Laufzeitmethode!

Jochen

PS: Habe ich wohl nicht ausreichend respektive falsch recherchiert, ist ja schon länger bekannt. Sorry!

Bookmark the permalink.

Schreibe einen Kommentar