Zitat von
richard_boderich:
bitte nur eine ja / nein antwort
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.
Delphi-Quellcode:
const
IMAX = 10000;
procedure TDemoForm.MarabuClick(Sender: TObject);
var
i: Integer;
s: String;
tc: Cardinal;
sl: TStringList;
begin
sl := TSTringList.Create;
sl.Sorted := true;
sl.Duplicates := dupIgnore;
tc := GetTickCount;
for i := 1 to IMAX do
begin
s := RandomStr(3);
sl.Add(s);
end;
tc := GetTickCount - tc;
ShowMessage(Format('%d dupes, %d ticks', [IMAX - sl.Count, tc]));
sl.Free;
end;
procedure TDemoForm.RichardClick(Sender: TObject);
var
i: Integer;
s: String;
tc: Cardinal;
sl: TStringList;
begin
sl := TSTringList.Create;
sl.Sorted := true;
tc := GetTickCount;
for i := 1 to IMAX do
begin
s := RandomStr(3);
if sl.IndexOf(s) = -1 then
sl.Add(s);
end;
tc := GetTickCount - tc;
ShowMessage(Format('%d dupes, %d ticks', [IMAX - sl.Count, tc]));
sl.Free;
end;
marabu