Forum: Object-Pascal / Delphi-Language
Delphi
by marabu,
29. Apr 2006
Hallo Richard.
Freundschaft (keiner sagt das so schön wie Hans Süper).
In meiner Routine lege ich wert auf Sortierung, damit ich vom binary search profitiere. Wenn du willst kannst du ja mal in deiner Routine die Sortierung auf Kommentar setzen und dann vergleichen.
Setze mal den Parameter auf 2.
Forum: Object-Pascal / Delphi-Language
Delphi
by marabu,
29. Apr 2006
Das nenne ich einen aufmerksamen Leser. Hier hast du:
function RandomStr(size: integer): string;
var
i: integer;
begin
SetLength(Result, size);
for i := 1 to Length(Result) do
Result := Chr(Ord('A') + Random(26));
Forum: Object-Pascal / Delphi-Language
Delphi
by marabu,
29. Apr 2006
Was verlangst du da. Sieh selbst. Ich habe auch bei deinem Code eine sortierte Liste vorausgesetzt - ansonsten läufst du außer Konkurrenz. Mit sortierter Liste bist du nur noch zwischen 10 und 40 Prozent langsamer.
const
IMAX = 10000;
procedure TDemoForm.MarabuClick(Sender: TObject);
var
i: Integer;
s: String;
Forum: Object-Pascal / Delphi-Language
Delphi
by marabu,
29. Apr 2006
Die Suche ist das teuerste an der Sache. Die Kosten reduziere ich durch Sorted = True wodurch die lineare Suche durch einen binary search ersetzt wird. Und durch die Ausnutzung von Duplicates = dupIgnore kann ich die lines-of-code drücken - weniger Code, weniger Fehler, happy people.
Wenn du was sparen willst, dann müsstest du bei einer sortierten Liste Find() anstelle von IndexOf() verwenden,...
Forum: Object-Pascal / Delphi-Language
Delphi
by marabu,
29. Apr 2006
Hallo Richard,
wenn die StringList keine doppelten Einträge aufnehmen darf und die assoziierten Objects nicht verwendet werden, dann ist es tatsächlich sinnvoll die Liste als sortierte Liste mit Duplikatabweisung zu führen:
begin
with TStringList.Create do
begin;
Sorted := true;
Duplicates := dupIgnore;