Pregunta Delphi XE3 - problema de rendimiento con TDataSet


El procesamiento de datos con programas XE3 toma hasta 10 veces más que con los mismos programas compilados con XE2. Este es un problema conocido (probablemente se refiere principalmente a TStringField), reportado a QC 111942, pero aún no está arreglado. ¿Alguien tiene una solución / solución para este problema?

TIA Branko


6
2018-03-24 09:25


origen


Respuestas:


Lo mismo en XE5. Además, el tráfico adicional y todo este asunto cliente-servidor requieren> 5 Mbit por segundo (!) Para funcionar normalmente. Estoy usando solo TFDConnection y TFDQuery. Especialmente para MySQL, la velocidad es la misma con los componentes Delphi y con el controlador de terceros (libmysql.dll). Si no tiene FireDAC, puede reemplazar TFDQuery con TSQLQuery. Aquí hay un procedimiento sobre cómo llenar una cuadrícula de cuerdas:

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;

Esta es la cuadrícula de cadena VCL. Por supuesto, debes tratar con las actualizaciones y demás, pero ya no tendrás más problemas de rendimiento.


0
2017-07-13 06:28