一部のクライアントで Midas.dll によって引き起こされる dll 地獄を回避するために、MidasLib を宣言しています。
以下のコードは、約 2350ms で実行されます。uses の 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.