Fragt sich was das für ein Cache ist? Wenn ich folgendes Fragment vorschalte, in dem ich die Daten komplett einlese, wird das Verarbeiten danach wesentlich schneller:
Delphi-Quellcode:
for i := Low(AFiles) to High(AFiles) do
begin
Watch.Start;
fs := TFileStream.Create(AFiles[i], fmExclusive);
SetLength(Buffer, fs.Size);
fs.ReadBuffer(Buffer[0], fs.Size);
Watch.Stop;
fs.Free;
end;
Diese Funktion braucht für 5.000 frisch erzeugte Dateien zwischen 500-1500 ms.
Wenn ich dann die Daten nochmals in Stringlisten einlese, werden 605-615 ms verbraucht.
Starte ich das Einlesen in die Stringlisten ohne den Vorlauf, braucht das beim ersten Mal 12000-13000 ms.
Vorlauf | 1500 |
Verarbeitung | 615 |
Summe | 2115 |
Direkte Verarbeitung | 13000 |
D.h. dieses Verfahren ist 6x schneller!
Ich musste ein par Sachen anders lösen um das Programm mit Delphi 2007 zum Laufen zu bringen.
Die von dir gemessenen Ergebnisse kann ich aber überhaupt nicht nachvollziehen:
Code:
CreateDataClick
CreateFiles 0:00:14.527
ReadClick
GetFiles 0:00:00.007
ReadFiles 0:00:01.692
Split 0:00:03.112
CreateDataClick
CreateFiles 0:00:09.681
OpenClick
GetFiles 0:00:00.006
Open 0:00:02.614
ReadClick
GetFiles 0:00:00.006
ReadFiles 0:00:01.649
Split 0:00:03.336