我的程序正在处理来自Telnet、HTTP等的字符串,并且我需要将这些字符串写入文本文件进行日志记录。有时程序可能会崩溃,我需要确保剩余的字符串不会丢失,因此我为每个传入的字符串打开/关闭文件,但这样做会导致一些性能问题。例如,下面的代码需要8秒才能完成。我的代码如下,有没有改进性能的方法?(对于下面的测试,只需创建一个带Button1的表单,具有OnClick事件和lbl1标签即可。)
Procedure AddToFile(Source: string; FileName :String);
var
FText : Text;
TmpBuf: array[word] of byte;
Begin
{$I-}
AssignFile(FText, FileName);
Append(FText);
SetTextBuf(FText, TmpBuf);
Writeln(FText, Source);
CloseFile(FText);
{$I+}
end;
procedure initF(FileName : string);
Var FText : text;
begin
{$I-}
if FileExists(FileName) then DeleteFile(FileName);
AssignFile(FText, FileName);
ReWrite(FText);
CloseFile(FText);
{$I+}
end;
procedure TForm1.Button1Click(Sender: TObject);
var tTime : TDateTime;
iBcl : Integer;
FileName : string;
begin
FileName := 'c:\Test.txt';
lbl1.Caption := 'Go->' + FileName; lbl1.Refresh;
initF(FileName);
tTime := Now;
For iBcl := 0 to 2000 do
AddToFile(IntToStr(ibcl) + ' ' + 'lkjlkjlkjlkjlkjlkjlkj' , FileName);
lbl1.Caption := FormatDateTime('sss:zzz',Now-tTime);
end;