XE3 プログラムでのデータ処理は、XE2 でコンパイルされた同じプログラムの最大 10 倍かかります。これはQC 111942に報告された既知の問題 (おそらく主に TStringField を参照)ですが、まだ修正されていません。この問題の修正/回避策はありますか?
TIAブランコ
XE3 プログラムでのデータ処理は、XE2 でコンパイルされた同じプログラムの最大 10 倍かかります。これはQC 111942に報告された既知の問題 (おそらく主に TStringField を参照)ですが、まだ修正されていません。この問題の修正/回避策はありますか?
TIAブランコ
XE5でも同じ。加えて、余分なトラフィックと、このすべてのクライアント サーバーの処理が正常に動作するには、毎秒 5 メガビット (!) を超える必要があります。私は TFDConnection と TFDQuery のみを使用しています。特に MySQL の場合、速度は Delphi コンポーネントとサードパーティ ドライバ (libmysql.dll) で同じです。FireDAC がない場合は、TFDQuery を TSQLQuery に置き換えることができます。文字列グリッドを埋める手順は次のとおりです。
procedure SelGrid(sql:ansiString;Q:TFDQuery;grid:TStringGrid);
var i: integer;
begin
Q.Close;
Q.SQL.Text:='';
Q.Open(sql);
grid.ColCount:=Q.FieldCount;
grid.RowCount:=1;
while not Q.Eof do begin
for i := 0 to grid.ColCount-1 do grid.Cells[i,grid.RowCount-1]:=Q.Fields.Fields[i].AsString;
grid.RowCount:=grid.RowCount+1;
Q.Next;
end;
Q.Close;
if grid.RowCount>1 then grid.RowCount:=grid.RowCount-1;
grid.Row:=0;
//AutoSizeGridColumns(grid,30,200);
end;
これは VCL ストリング グリッドです。もちろん、更新などに対処することは考えますが、パフォーマンスの問題はもうありません。