Zum Testen eines USB3.0-Drives habe ich ein kleines Programm gemacht, das ein 100MB-File schreibt und liest.
Dazu verwende ich folgende Funktionen:
Delphi-Quellcode:
//data ist ein 100MB-String
function LoadStringFromFile(const fileName : String) : String;
var
fs : TFileStream;
begin
fs:=TFileStream.Create(fileName, fmOpenRead+fmShareDenyNone);
SetLength(Result, fs.Size);
fs.Read(Result[1], fs.Size);
fs.Free;
end;
procedure TForm1.WriteCClick(Sender: TObject);
var
fs : TFileStream;
gtc1, gtc2 : Cardinal;
begin
filename:= DriveComboBox1.Drive + ':\test.txt';
gtc1:= GetTickCount;
fs:=TFileStream.Create(fileName, fmCreate);
fs.Write(DATA[1], Length(DATA));
fs.Free;
gtc2:= GetTickCount;
lbWtimeC.caption:= IntToStr(gtc2-gtc1)+' Millisec ';
lbWriteC.caption:= IntToStr(100000 div(gtc2-gtc1))+' MB/sec ';
end;
procedure TForm1.ReadCClick(Sender: TObject);
var
s : String;
gtc1, gtc2 : Cardinal;
begin
gtc1:= GetTickCount;
s:= LoadStringFromFile(filename);
gtc2:= GetTickCount;
lbReadC.caption:= IntToStr(100000 div(gtc2-gtc1))+' MB/sec ';
lbRtimeC.caption:= IntToStr(gtc2-gtc1)+' Millisec ';
end;
Beim Schreiben werden Geschwindigkeiten von 60-70 MB/sec angezeigt, beim Lesen
erscheint ein unglaubwürdiger Wert von über 600 MB/sec.
Wer hat Verbesserungsvorschläge?
Danke für's Nachdenken und Helfen!