hmm wenn ich Deine Zahlen richtig sehen...
Blockwrite schneller als Streamwrite
StreamRead schneller als Blockread...
Komisch...
Aber Du hast natürlich sehr keine Blockgrößen genommen...
Delphi-Quellcode:
var
Puffer : array [0..1024*1024*1024-1] of byte;
implementation
Uses System.Diagnostics;
procedure TForm42.Button1Click(Sender: TObject);
var
F : File;
FS : TFileStream;
SW : TStopWatch;
BR,ST : array[0..9] of Int64;
I : Integer;
Gelesen : Integer;
Filename : String;
begin
Filename := 'Big.iso';
Memo1.Lines.Text := 'Lesen von '+(GetFilesize('Big.iso') / 1024).ToString+' KB - gelesen in Häppchen zu '+(Sizeof(Puffer) / 1024).ToString+' KB';
for i:=0 to 5 do
begin
AssignFile(F,Filename);
Reset(F,1);
SW := TStopWatch.StartNew;
SW.Start;
repeat
Blockread(F,Puffer[0],Sizeof(Puffer),gelesen);
until gelesen = 0;
SW.Stop;
Closefile(F);
BR[I] := SW.ElapsedMilliseconds;
FS := TFileStream.Create(Filename,fmopenRead);
SW := TStopWatch.StartNew;
SW.Start;
repeat
gelesen := FS.Read(Puffer[0],Sizeof(Puffer));
until gelesen = 0;
SW.Stop;
FS.Free;
ST[I] := SW.ElapsedMilliseconds;
Memo1.Lines.Add('Versuch '+i.ToString+' : Blockread('+BR[i].ToString+' ms) StreamRead('+ST[i].ToString+' ms)');
Application.ProcessMessages;
end;
end;