带Cache的FileStream
当创建一个TFileStream并顺序读取的时候,如果每次读取的字节比较少时,效率是相当低的。大家可以做一个测试:
var
aStream: TStream;
B: Byte;
T: TDateTime;
begin
if not OpenDialog1.Execute then
Exit;
Caption := '';
Application.ProcessMessages;
T := Now;
aStream := TFileStream.Create(OpenDialog1.FileName, fmOpenRead or fmShareDenyWrite);
try
repeat
until aStream.Read(B, 1) = 0;
finally
aStream.Free;
end;
Caption := TimeToStr(Now - T);
end;
在我的笔记本上,处理一个3M的文件就用了12秒。
加入缓存处理后,用时不到0.2秒。
缓存处理的代码内容请参见我的博客: http://blog.csdn.net/bamboocaep