Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Für große Liste mit Objekten (>30000) TList oder TStringList


NOS1971 - Sa 13.04.13 22:48
Titel: Für große Liste mit Objekten (>30000) TList oder TStringList
Hallo,

ich frage mich grad ob welche Liste sich für eine Eintragszahl >30000 Einträge besser nutzt und welche Liste da schneller Arbeitet. TList oder TStringlist oder gibt es andere Varianten ? Die Eintragsbasis ist ein String. Angehangen wird ein Objekt mit weiteren dazugehörigen Daten. Interessant wäre auch ob es eine Begrenzung der Einträge gibt.

Ich würde mich über Eure Meinung und Erfahrungen freuen.

LG,

Andreas


Tranx - So 14.04.13 08:36

Ich geher fast - ohne das beweisen zu können - davon aus, dass TSringlist besser geeignet ist, Deine Strings zu verwalten, als TList. Ob schneller, weiß ich nicht. Aber Du musst ja bei TList, welches ja nur Pointer verwaltet, den Strings selber Speicherplatz zuordnen, während das in der Add-Prozedur von TStringlist automatisch passiert. Und umgekehrt beim Entfernen musst Du den Speicherplat in TList selber freigeben, was bei TStringlist wiederum automatisch passiert. Der Eigenanteil an der Listenverwaltung ist daher sicher ein wenig größer und Fehler schleichen sich dann auch eher ein. Daher würde ich eher zu TStringlist oder TStrings (Vorgänger von TStringlist) raten. Zumal Du bei TStringlist noch den Vorteil einer sortierten Liste, falls benötigt, hast, die sogar u.U. Doppeleinträge abblockt, wenn Du die Eigenschaft Duplicates auf dupError setzst.


Lemmy - So 14.04.13 10:23

Hi,
und wenn Du in der Stringlist noch nach bestimmten Strings suchen musst um das Objekt zurück zu holen, dann schaue dir mal THashedStringList an.


bummi - So 14.04.13 16:15

Ich kenne Deine Delphiversion und das Ziel Deiner Anwendung nicht, gegf. ist TDictionary eine Alternative.