Registriert seit: 26. Jul 2003
Ort: Leipzig
1.350 Beiträge
Delphi XE2 Professional
|
Performante sortierte LIste
15. Okt 2010, 23:03
Hallo,
ich baue im Moment so eine Art Ticketsystem.
Ein Ticket kommt zu einem willkürlichen Zeitpunkt an.
Es hat eine unterschiedliche zeitliche Länge und soll auf einer Zeitleiste ab einem bestimmten Datum eingeordnet werden.
In der zeitlichen Folge entstehen Belegungslücken.
Kommt ein neues Ticket an, dann wird ab dem gewünschten Termin eine Lücke gesucht, in welche das Tiket passt. Wird keine gefunden, dann wird es am Ende der Zeitleiste angehängt.
Für die Speicherung verwende ich ein generic-TList. Jedes Tiket wird durch eine Klasse dargestellt.
Ich suche jetzt das gewünschte Datum linear und dann vergleiche ich Anfangs-Endzeit aller folgenden Tikets um eine zeitliche Lücke zu finden.
Habe ich eine Lücke gefunden, dann füge ich die Classe an der Stelle ein.
Hier geht es um sehr große Mengen. ca 3000 Tikets in etwa 500 bis 1000 Vorgängen.
Ich hatte bemerkt das es performanter ist, das neue Tiket an die Liste anzuhängen und dann nach dem Datum zu sortieren.
Bei etwa 3000 Datensätzen kippt aber die Performance und das Einfügen wird schneller.
Das Sortieren in generischen Listen scheint weniger performant zu sein als im TList.
Ich habe dann versucht in einer Liste nicht die Tikets selbst, sondern die Lücken in der Belegung der Zeitachse zu speichern. Statt Anfangs-Endzeit zu vergleichen, suche ich jetzt in einer Liste eine passende Zeitlücke und modifiziere dann diese.
Das bringt zwar etwas Zeitgewinn aber nicht im erwarteten Umfang.
Es scheint als ob ein TList der Flaschenhals ist.
Ich denke im Moment über eine Hashliste oder eine verkettete Liste nach. Hat hier wer Erfahrung wie die Performance im Vergleich zu einem TList ist oder hat wer eine Idee wie man eine performantere Lösung dieses Problems erreichen kann?
Gruß Peter
|