Ok, ich werd es mal Testen, aber warum sollte eine verkettete Liste schneller sein?
Ich leg ja das Array schon vor dem Einladen an. Es existieren also schon alle Einträge (nur ohne die richtigen Werte
). Und zur Laufzeit weise ich dann die Werte zu.
Bei einer List müsste ich in jedem Durchlauf ein Element anlegen und Zeiger setzen.
Edit:
----
Ich hab jetzt mal noch ne kleinere Zeitmessung gemacht. uUnd zwar mit folgendem Code:
Delphi-Quellcode:
procedure TCRSDataSourceFile.FindAllFiles(var FileEntrys : array of RCRSFileEntry; RootFolder: string; Mask: TStrings = nil; Recurse: Boolean = True);
var
SR: TSearchRec;
i: Integer;
Item: RCRSFileEntry;
begin
RootFolder := IncludeTrailingPathDelimiter(RootFolder);
if Mask = nil then
begin
Mask := TStringList.Create;
Mask.Add('*.*');
end;
if Recurse then
if FindFirst(RootFolder + '*.*', faAnyFile, SR) = 0 then
try
repeat
if SR.Attr and faDirectory = faDirectory then // Verzeichnis
begin
if (SR.Name <> '.') and (SR.Name <> '..') then
begin
FindAllFiles(FileEntrys, RootFolder + SR.Name, Mask, Recurse);
end;
end else // Datei gefunden
begin
aktLength := 0;
end;
until FindNext(SR) <> 0;
finally
FindClose(SR);
end;
end;
Es wird also nichts mit den Dateien gemacht. Nur jede einmal angefasst. Und da dauert das einlesen von 10.000 Elementen schon 3 Minute lang. Ich denke also, der Beschränkende Faktor ist entweder die Festplattengeschwindigkeit oder Die Funkntionen FindFist/FindNext usw.
Oder habt ihr eine andere Idee?