2013-03-24 5 views
6

Datenverarbeitung mit XE3-Programmen dauert bis zu 10 Mal mehr als mit gleichen Programmen mit XE2 kompiliert. Dies ist bekanntes Problem (wahrscheinlich bezieht sich hauptsächlich auf TStringField), gemeldet an QC 111942, aber es ist noch nicht behoben. Hat jemand einen Fix/Workaround für dieses Problem?Delphi XE3 - Leistungsproblem mit TDataSet

TIA Branko

+0

IMHO Ihre einzige Hoffnung ist Downgrade oder verwenden Sie einige Drittanbieter Speicher Tabelle Komponente – ComputerSaysNo

+0

@ComputerSaysNo - das Problem ist nicht TClientDataset spezifisch, ich verwende nicht einmal CDS – Branko

Antwort

0

Gleiches in XE5. Plus zusätzlicher Verkehr und all diese Client-Server-Sache erfordern> 5 Mbit pro Sekunde (!), Um normal zu arbeiten. Ich verwende nur TFDConnection und TFDQuery. Speziell für MySQL ist die Geschwindigkeit identisch mit Delphi-Komponenten und mit Treibern von Drittanbietern (libmysql.dll). Wenn Sie kein FireDAC haben, können Sie TFDQuery durch TSQLQuery ersetzen. Hier ist ein Verfahren zum Füllen eines String-Rasters:

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; 

Dies ist VCL String Grid. Natürlich musst du mit Updates umgehen und so weiter, aber du wirst keine Performance-Probleme mehr haben.

+0

QC Artikel 111942 ist als gelöst in XE4 markiert. Sind Sie sicher, dass es sich um dasselbe Problem handelt? (Der WC-Eintrag enthält eine Testanwendung, um die Leistung für dieses spezielle Problem zu messen.) – mjn

+0

Nein, ich bin mir nicht sicher, aber mit MySQL5 hatte ich Leistungsprobleme, die mit der Verbindung von Drittanbietern verschwanden. Danach beginne ich zu versuchen und festgestellt, dass die Leistung mit TFDConnection und TFDQuery die gleiche wie libmysql.dll ist, also habe ich die App mit TFDConnection und TFDQuery neu erstellt. Jetzt habe ich es nicht mit Datenbanken zu tun, das war nur eine alte Erinnerung. – LHristov