2013-03-24 90 views
6

使用XE3程序進行數據處理比使用XE2編譯的相同程序要多10倍。這是已知問題(可能主要指的是TStringField),報告爲QC 111942,但尚未確定。有沒有人對此問題有修正/解決方法?Delphi XE3 - TDataSet性能問題

TIA Branko

+0

恕我直言,你唯一的希望是降級或使用一些第三方內存表組件 – ComputerSaysNo 2013-03-24 13:05:51

+0

@ComputerSaysNo - 問題不是TClientDataset特定的,我甚至不使用CDS – Branko 2013-03-24 18:03:23

回答

0

與XE5相同。加上額外的流量,所有這些客戶端 - 服務器的東西需要> 5 Mbit每秒(!)才能正常工作。我只使用TFDConnection和TFDQuery。特別是對於MySQL,速度與Delphi組件以及第三方驅動程序(libmysql.dll)相同。如果你沒有FireDAC,你可以用TSQLQuery代替TFDQuery。以下是一個如何填充字符串網格的過程:

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字符串網格。當然你可以處理更新等等,但是你不會有更多的性能問題。

+0

QC項目111942被標記爲在XE4中解析。你確定它是同一個問題嗎? (WC條目包含一個測試應用程序,用於衡量這個特定問題的性能) – mjn 2014-07-14 06:29:16

+0

不,我不確定,但是對於MySQL5,我遇到了性能問題,這些問題與第三方連接不兼容。之後,我開始嘗試並發現使用TFDConnection和TFDQuery的性能與libmysql.dll相同,因此我使用TFDConnection和TFDQuery重新構建了應用程序。現在我不處理數據庫,所以這只是一箇舊的記憶。 – LHristov 2014-07-14 07:06:06