2013-03-24 25 views
6

Xử lý dữ liệu với các chương trình XE3 mất tới 10 lần so với các chương trình tương tự được biên dịch với XE2. Đây là vấn đề đã biết (có thể là chủ yếu đề cập đến TStringField), được báo cáo là QC 111942, nhưng nó chưa được sửa. Có ai có một sửa chữa/workaround cho vấn đề này?Delphi XE3 - vấn đề hiệu suất với TDataSet

TIA Branko

+0

IMHO hy vọng duy nhất của bạn là để hạ cấp hoặc sử dụng một số thứ ba bảng bộ nhớ bên phần – ComputerSaysNo

+0

@ComputerSaysNo - vấn đề không được TClientDataSet cụ thể, tôi thậm chí không sử dụng CDS – Branko

Trả lời

0

Tương tự trong XE5. Cộng thêm lưu lượng truy cập bổ sung và tất cả điều khách hàng-máy chủ này yêu cầu> 5 Mbit/giây (!) Để hoạt động bình thường. Tôi đang sử dụng chỉ TFDConnection và TFDQuery. Đặc biệt cho MySQL tốc độ là như nhau với các thành phần Delphi và với trình điều khiển bên thứ ba (libmysql.dll). Nếu bạn không có FireDAC, bạn có thể thay thế TFDQuery bằng TSQLQuery. Đây là một thủ tục như thế nào để điền vào một mạng lưới chuỗi:

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; 

Đây là VCL chuỗi lưới. Tất nhiên, bạn thích giải quyết các bản cập nhật và vân vân, nhưng bạn sẽ không gặp phải vấn đề gì về hiệu năng nữa.

+0

QC mục 111.942 được đánh dấu là giải quyết trong XE4. Bạn có chắc đó là vấn đề tương tự không? (Mục nhập WC bao gồm một ứng dụng thử nghiệm để đo hiệu suất cho vấn đề cụ thể này) – mjn

+0

Không, tôi không chắc chắn, nhưng với MySQL5 tôi đã có vấn đề hiệu suất, mà dissapeared với kết nối bên thứ 3. Sau đó tôi bắt đầu cố gắng và thấy rằng với TFDConnection và TFDQuery hiệu suất là giống như libmysql.dll, vì vậy tôi xây dựng lại các ứng dụng với TFDConnection và TFDQuery. Bây giờ tôi không giao dịch với cơ sở dữ liệu, vì vậy đây chỉ là một bộ nhớ cũ. – LHristov

Các vấn đề liên quan