我声明MidasLib可以避免在某些客户端中由Midas.dll引起的dll hell 。

下面的代码在大约2350毫秒内运行。如果删除使用中的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
  • 10-08 17:29