Autor Beitrag
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: So 04.02.07 17:00 
user profile iconwulfskin hat folgendes geschrieben:
user profile iconalzaimar hat folgendes geschrieben:
Die Methode 'IndexOf' einer TStringList sucht binär, wenn die Eigenschaft 'Sorted' auf 'True' eingestellt ist, sonst sequentiell.
Das mit der Eigenschaft stimmt natürlich, aber IndexOf ruft auch nur intern Find auf.

Ich wollte damit nur auf die Möglichkeit der Steuerung des Suchverfahrens hinweisen. 'Find' verwende ich gar nicht.

_________________
Na denn, dann. Bis dann, denn.
matze
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 4613
Erhaltene Danke: 24

XP home, prof
Delphi 2009 Prof,
BeitragVerfasst: So 04.02.07 17:21 
und das mit den Dubletten kannst du dir auch automatisch erledigen lassen, wenn du
Stringlist.duplicated := dupIgnore; machst.
F34r0fTh3D4rk Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: So 04.02.07 17:56 
wenn ich sorted := true setze, wird dann immer sortiert oder wird mit einem abbruch verfahren getestet, ob die liste sortiert ist ? weil wenn ich das einstelle, sollte ich eigentlich einen performance schub durch die binäre suche erlangen können.

mfg
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: So 04.02.07 18:00 
Fear, nimm Dir meine Links zur Brust und mach es damit. Dann hast Du keine Performanceprobleme mehr.

Sorted := True fügt das neue Wort immer an die richtige Stelle ein=> etwas langsamer beim Einfügen.

_________________
Na denn, dann. Bis dann, denn.
wulfskin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1349
Erhaltene Danke: 1

Win XP
D5 Pers (SSL), D2005 Pro, C, C#
BeitragVerfasst: So 04.02.07 18:15 
user profile iconalzaimar hat folgendes geschrieben:
Sorted := True fügt das neue Wort immer an die richtige Stelle ein=> etwas langsamer beim Einfügen.
Genau, wenn es dir _nur_ um einen schnellen Zugriff geht, dann erstell die Liste mit Sorted := False;, füg die Elemente ein und setz dann diese Eigenschaft auf wahr.
Danach kannst du dann über IndexOf die Elemente binär suchen!

Viele Grüße,
Hape

_________________
Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.
Grenzgaenger
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 04.02.07 19:13 
er hat ja auch noch nix gesagt, wie häufig dass er etwas einfügen will. nur einalig mit etwas pflege dann und wann, oder ständig etwas einfügen... und stelten etwas abfragen. all dies sind fragen, welche zuvor zu beantworten sind, bevor man sich auf 'n algo festlegt. wenn's nur seltene einfügeoperationen sind, so ist die unit und ggf. auch das array (tstringlist) gut geeingnet. werden häufiger daten eingefügt und ist die anzahl hoch, so scheidet das array aus, weil die aktualisierung zu lange benötigt... so hat jeder algo seie vor und nachteile.