Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   QuantumGrid in Provider Mode und DataChanged: Performance-Problem (https://www.delphipraxis.net/165011-quantumgrid-provider-mode-und-datachanged-performance-problem.html)

romber 10. Dez 2011 11:44

Datenbank: TcxCustomDataSource • Version: 5 • Zugriff über: TcxCustomDataSource

QuantumGrid in Provider Mode und DataChanged: Performance-Problem
 
Hallo!

Ich habe hier ein DevExpress QuantumGrid, den ich in Provider Mode benutze und über ein von TcxCustomDataSource abgeleitetes Objekt sehr intensiv mit Daten befühle (bis zu 100 Datensätze/Sekunde). Jeden neuen Datensatz soll sofort im Grid angezeigt werden. Dafür rufe ich die Methode DataChanged des TcxCustomDataSource auf. Und genau hier habe ich ein Problem. Bei einer großen Menge der bereits vorhandenen Datensätzen friert mein Grid für mehre Sekunden ein. Das liegt wohl daran, dass beim Aufruf von DataChanged alle Datensätze neu geladen werden.

Gibt es eine Möglichkeit, nur den neu hinzugefügten Datensatz dem Grid hinzu zu fügen, ohne das jedesmal die ganzen Daten neu geladen werden?

Bebe 10. Dez 2011 14:20

AW: QuantumGrid in Provider Mode und DataChanged: Performance-Problem
 
Vielleicht helfen dir diese beiden Links.

http://www.devexpress.com/Support/Center/KB/p/A291.aspx

oder dieser

http://www.devexpress.com/Support/Center/p/DQ42284.aspx

Gruß
Matze

romber 10. Dez 2011 19:55

AW: QuantumGrid in Provider Mode und DataChanged: Performance-Problem
 
Vielen Dank für diese Links!

Das Problem ist, dass DataController meines Views keine Eigenschaft DataModeController hat. Ich vermute, dass diese Eigenschaft nur den DB-Varianten des Views zur Verfügung steht. Meine Grid ist an keine DB gebunden, ich nutze Provider Mode mit CustomDataSource.

Tyrolean 11. Dez 2011 16:07

AW: QuantumGrid in Provider Mode und DataChanged: Performance-Problem
 
Zitat:

Zitat von romber (Beitrag 1140725)
Hallo!

Ich habe hier ein DevExpress QuantumGrid, den ich in Provider Mode benutze und über ein von TcxCustomDataSource abgeleitetes Objekt sehr intensiv mit Daten befühle (bis zu 100 Datensätze/Sekunde). Jeden neuen Datensatz soll sofort im Grid angezeigt werden. Dafür rufe ich die Methode DataChanged des TcxCustomDataSource auf. Und genau hier habe ich ein Problem. Bei einer großen Menge der bereits vorhandenen Datensätzen friert mein Grid für mehre Sekunden ein. Das liegt wohl daran, dass beim Aufruf von DataChanged alle Datensätze neu geladen werden.

Gibt es eine Möglichkeit, nur den neu hinzugefügten Datensatz dem Grid hinzu zu fügen, ohne das jedesmal die ganzen Daten neu geladen werden?

Was passiert denn, wenn du einfach den Datensatz anhängst. Ich vermute mal so in der ARt

iREc := vDaten.DAtaController.AppendRecord;
vDaten.DataController.VAlues[iREc,0] := 'Datensatz ' + IntToStr(iRec);

Bei mir zeigt er einfach diesen neuen Datensatz an ohne was spezielles zu machen ...

Furtbichler 11. Dez 2011 17:45

AW: QuantumGrid in Provider Mode und DataChanged: Performance-Problem
 
Warum soll jeder Datensatz sofort sichtbar sein? Mehr als 20 Bildwechsel pro Sekunde bekommt das Auge doch sowieso nicht mit.

Verzichte auf das Datachanged bei jedem neuen Datensatz und erstelle stattdessen einen Timer, der das DataChanged mehrmals pro Sekunde aufruft. So kannst Du sicher sein, das dir auch bei 10000 Datensätzen/Sek. der Rechner nicht einfriert.

romber 11. Dez 2011 20:51

AW: QuantumGrid in Provider Mode und DataChanged: Performance-Problem
 
Zitat:

Zitat von Tyrolean (Beitrag 1140834)
Was passiert denn, wenn du einfach den Datensatz anhängst. Ich vermute mal so in der ARt

iREc := vDaten.DAtaController.AppendRecord;
vDaten.DataController.VAlues[iREc,0] := 'Datensatz ' + IntToStr(iRec);

Bei mir zeigt er einfach diesen neuen Datensatz an ohne was spezielles zu machen ...

Innerhalb der Append wird dann ebenfalls die DataChanged aufgerufen und alle Daten werden neu geladen. Man merkt's gar nicht, wenn nicht viele Datensätze hat.

Furtbichler 12. Dez 2011 06:27

AW: QuantumGrid in Provider Mode und DataChanged: Performance-Problem
 
Zitat:

Zitat von romber (Beitrag 1140864)
Innerhalb der Append wird dann ebenfalls die DataChanged aufgerufen...

Das ist korrekt, aber hier irrelevant: DataChanged wird im Setter der Value-Eigenschaft aufgerufen, um die Änderung des Zellinhaltes schtbar zu machen.

Zitat:

Zitat von romber (Beitrag 1140864)
..Man merkt's gar nicht, wenn nicht viele Datensätze hat.

Bei 100 Datensätzen pro Sekunde ist die Applikation dann doch ein wenig damit beschäftigt, den (zum größten Teil überflüssigen) Aktualisierungsanforderungen nachzukommen.

uligerhardt 12. Dez 2011 07:30

AW: QuantumGrid in Provider Mode und DataChanged: Performance-Problem
 
Das hilft dir jetzt aktuell nicht, aber du kannst ja mal für die Zukunft diese Suggestion tracken. (Tracken dient bei DevEx auch als Votingsystem.)

uligerhardt 12. Dez 2011 07:34

AW: QuantumGrid in Provider Mode und DataChanged: Performance-Problem
 
(Doppelmoppel. Bitte ignorieren. :oops:)

romber 12. Dez 2011 12:08

AW: QuantumGrid in Provider Mode und DataChanged: Performance-Problem
 
Zitat:

Zitat von uligerhardt (Beitrag 1140919)
Das hilft dir jetzt aktuell nicht, aber du kannst ja mal für die Zukunft diese Suggestion tracken. (Tracken dient bei DevEx auch als Votingsystem.)

Vielen Dank für das Link!

Das Problem ist ja allgemein bekannt, nur eine Lösung gibt's nach wie vor nicht. Ich habe auf dem DevExpress Forum mehrere Threads zu diesem Thema gefunden, einige bereits 2007 verfasst. Seit dem hat sich nichts getan in dieser Richtung. Ich habe gehofft, jemand hier hat sich vielleicht irgendwelche Tricks ausgedacht. Wäre schön...


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:21 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz