Performance von SortedList und SortedDictionary


Wie bereits in meinem letzten Beitrag erwähnt habe ich ein kleines Tool zum Auswerten von Logdateien geschrieben und hier das erste mal so richtig gemerkt das es doch hin und wieder auf “Kleinigkeiten” und die Performance ankommt. Denn es ist schon ein Unterschied ob ich zum Laden und Auswerten eines Logfiles 20sek benötige oder zwei Minuten.

Im Letzten Beitrag ging es um die “DateTime.TrypParseExact” Methode welche für das einmalige Parsen eines Datumswertes problemlos funktioniert, aber wenn man zehntausende von Datensätzen laden möchte, ist sie ungeeignet, da sie zu langsam ist.

Ein weiteres Problem auf das ich gestoßen bin ist das Benutzen einer

SortedList<DateTime, CustomType>

wenn man mehr wie eine Million Datensätze in Ihr aufbewahrt. Denn aber ungefähr dieser Größenordnung habe ich feststellen müssen, das die SortedList nicht mehr Performant arbeitet. Hier hat das Hinzufügen neuer Werte plötzlich eine Zehntel Sekunde benötigt, was zu einer Ewigkeit werden kann wenn man fast 2 Millionen Einträge in der Liste hat.

Nachdem ich dann von der SortedList<DateTime, CustomType> auf ein SortedDictionary<DateTime, CustomType> umgestellt habe gingen auch Listen die mehr wie eine Million Einträge haben wieder sehr schnell zu laden. Wenn man also mit großen Datenmengen zu tun hat können sich schon einfache Umstellungen sehr stark auf die Performance auswirken, es lohnt sich also über alternative Listen und Funktionen zu informieren.

Advertisements

2 Gedanken zu „Performance von SortedList und SortedDictionary

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s