我在一些客户端声明MidasLib以避免由Midas.dll引起的dll地狱.
下面的代码运行大约2350ms.如果我在使用中删除了MidaLib声明,它将在45毫秒内开始运行!!
data.xml文件使用TClientDataSet.SaveToFile方法保存,有5000条记录,大小约为600Kb.
有谁知道如何解释这种奇怪的行为?
我可以在Delphi XE2 upd 3和Delphi XE3 upd 2中确认问题.
谢谢.
program Loader; {$APPTYPE CONSOLE} {$R *.res} uses MidasLib,System.SysUtils,Winapi.Windows,Data.DB,Datasnap.DBClient; var cds : TClientDataSet; start,stop : Cardinal; begin cds := TClientDataSet.Create(nil); try start := GetTickCount; cds.LoadFromFile('c:\temp\data.xml'); stop := GetTickCount; Writeln(Format('Time elapsed: %dms',[stop-start])); finally cds.Free; end; end.
解决方法
这是一个已知的错误/回归,请参阅质量控制报告
> http://qc.embarcadero.com/wc/qcmain.aspx?d=109476
> http://qc.embarcadero.com/wc/qcmain.aspx?d=107346