使用 XE3 程序进行数据处理的时间比使用 XE2 编译的相同程序多出 10 倍。这是已知问题(可能主要指 TStringField),报告给 QC 111942 ,但尚未修复。有人能解决这个问题吗?
蒂亚·布兰科
最佳答案
XE5 中也是如此。再加上额外的流量,所有这些客户端服务器都需要每秒 >5 Mbit (!) 才能正常工作。我仅使用 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 字符串网格。当然,您可能会处理更新等问题,但不会再遇到性能问题。
关于Delphi XE3 - TDataSet 的性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15596863/