JavaFX GUI Komponenten werden langsam bei größerer Datenmenge

da921610

Aktives Mitglied
Hallo liebes Forum,
ich sitze hier gerade an einem JavaFx Problem(chen).
Und zwar wollte ich mal einen Belastungstest bei einer ComboBox durchführen und habe dabei festgestellt, dass bei größerer Datenmenge das Control ziemlich träge wird.

Dabei hab ich zwei verschiedene Sachen getestet.

In meinem Controller habe ich zwei ComboBoxen

@FXML private ComboBox<MyObject> cbo_firstComboBox
@FXML private ComboBox<String> cbo_secondComboBox

Zur ersten:
In der MyObject-Klasse sind einige Attribute drin und auch eine toString()-Methode, die ja letztendlich für die Darstellung des anzuzeigenden Wertes in der Combobox liefert.

Zur zweiten:
Einfach nur String-Elemente


Nun bin ich her gegangen und habe für beide Comboboxen jeweils ca. 3000 Einträge erzeugt und der ComboBox hinzugefügt.

Bei der zweiten Combobox mit <String> war die Rechenzeit doch recht überschaubar, bei der ersten jedoch mit <MyObject> dauert das schon einiges an Zeit.

Nun meine Frage, irgendwelche Ideen, wie ich das ganze Beschleunigen kann?
 

dzim

Top Contributor
Erste Frage: Welches Betriebssystem?

Ich selbst habe bei mir auf dem Laptop mit Ubuntu die Beobachtung gemacht, das nicht die diskrete Graphikkarte genutzt wird, sondern die integrierte Intel-HD. Das führt regelmässig dazu, das bei einer etwas komplexeren Anwendung bei mir der Staubsauger angeht...

Um das zu überprüfen kannst du die Anwendung mit den zusätzlichen Java-Parametern
"-Dprism.verbose=true -Djavafx.verbose=true"
Das schreibt dir so einiges auf System.err

Dann: Die Frage nach dem Sinn. Warum gerade eine ComboBox so testen - ist das nicht eher unrealistisch?

Bei eigenen Objekten kommt es vielleicht auch noch darauf an, wie du das Databinding machst. Ich glaube, da kann man auch Dinge gern falsch machen, bin aber ehrlich gesagt auch kein Experte und kann dir da proforma auch keine "Super-Sauber"-Lösung bieten.
 

dzim

Top Contributor
Kleiner Nachtrag: ComboBox nutzt intern einen ListView zur Darstellung der Daten. Daher habe ich mal kurz etwas herumgesucht:

"javafx listview performance"
-> da sieht man schon, das die Performance bei vielen Objekte nicht unbedingt optimal ist - und das, obwohl die Liste schon theoretisch nur die Zellen rendert, die zu sehen sind (mal ein paar Logs in deinen CellFactory würgen, dann siehst du das auch auf der Konsole)

"javafx listview virtual"
-> Vielleicht kann dir eine Lib wie die hier helfen: https://github.com/TomasMikula/Flowless
 

da921610

Aktives Mitglied
Hey,
vielen Dank für die Rückmeldung.

Ich habe das mal an einer ComboBox getestet, weil nach dem Prinzip von JavaFx Objekte direkt an die Komponenten gelegt werden können. Das betrifft ja nicht nur eine normale ComboBox, sondern noch mehr zum Beispiel den TableView oder den TreeView. Ich denke mal, dass dort das gleiche Problem auftreten kann, wenn viele große Objekte drauf gelegt werden.

Aber nun zu deinem Beitrag.
Betriebssystem spielt keine Rolle, da es eher eine generelle Problematik ist und ich zumindest drauf vorbereitet sein möchte, falls meine Applikation(en) mal Probleme mit Performance bereiten.

Was meinst du denn genau, was man beim Databinding falsch machen kann. Gibts da irgendwelche allgemeingülltige Hinweise, die ich beachten kann?

Und der ListView soll generell ziemlich unperformant sein, was natürlich auch einen Beitrag dazu leisten kann...

Aber schonmal vielen Dank für die Bemühungen :)
 

dzim

Top Contributor
Vielleicht kannst du ja mal etwas Code liefern, dann könnte man mal drüberschauen und versuchen zu optimieren.
Nur aus Neugier: Wie lädst du die Daten rein? En bloc oder peu à peu? Weil du natürlich auch die Liste asynchron befüllen könntest. Ob das jetzt besser klappt, weiss ich nicht. Und ohne deinen Code wird es auch für mich eher schwierig, daran herum zu optimieren ;-)
 

Thallius

Top Contributor
Wenn Du 3000 Daten gleichzeitig darstellen willst, hast Du definitiv ein Konzeptproblem. Welcher Mensch kann denn mit 3000 Daten etwas anfangen. Reduziere die Daten auf das was der User braucht, bzw was ihn interessiert. Das sollte in der Regel nicht mehr als 20 Daten sein. Selbst in einer Tableview würde ich ab 20 Datensätzen mit Paging und Filtering arbeiten weil es sonst einfach unübersichtlich wird. Eine Ausnahme bilden nur Grafiken aber da hast du auch kein Performance-Problem bei 3000 Punkten.

Gruß

Claus
 

dzim

Top Contributor
Naja, es gibt sicher schon Einsatzgebiete, wo in Tabellen mal gerne etwas mehr Daten enthalten sein können. Aber ich würde gerade bei Listen auch eher auf Klasse, statt Masse, setzen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Mit ContentPane werden Komponenten angezeigt, mit SplitPane, JPanel nicht? AWT, Swing, JavaFX & SWT 6
L Komponenten eines Panels werden erst nach Klick darauf angezeigt AWT, Swing, JavaFX & SWT 13
E Komponenten von JScrollPane werden nicht richtig ermittelt AWT, Swing, JavaFX & SWT 2
DaCrazyJavaExpert Swing Komponenten in GridBagLayout werden Falsch angeordnet AWT, Swing, JavaFX & SWT 1
R Komponenten werden erst nach maximierung des Frames sichtbar (Linux) AWT, Swing, JavaFX & SWT 5
morphesus Swing Komponenten werden nicht angezeigt AWT, Swing, JavaFX & SWT 8
JuliaOne Komponenten innerhalb eine JScrollpane werden auch ausserhalb davon gezeichnet! AWT, Swing, JavaFX & SWT 7
xehpuk Swing Komponenten werden durch setFont() winzig AWT, Swing, JavaFX & SWT 3
M Komponenten werden nicht angezeigt AWT, Swing, JavaFX & SWT 6
T Komponenten im JDialog werden nicht erneut gerendert AWT, Swing, JavaFX & SWT 9
G GridBagLayout - Komponenten werden nicht angezeigt AWT, Swing, JavaFX & SWT 6
A Gui Komponenten werden nicht von selbst aktualisiert! AWT, Swing, JavaFX & SWT 2
G GUI-Komponenten werden nicht angezeigt AWT, Swing, JavaFX & SWT 3
G Nicht alle Komponenten werden angezeigt AWT, Swing, JavaFX & SWT 8
D Swing Komponenten nicht sichtbar nach Start AWT, Swing, JavaFX & SWT 12
H Fehler: Zum Ausführen dieser Anwendung benötigte JavaFX-Runtime-Komponenten fehlen AWT, Swing, JavaFX & SWT 44
H Swing , GridLayout, Größenbestimmung der Komponenten im Layout AWT, Swing, JavaFX & SWT 8
BabySuna Swing Komponenten auslagern auf separate Datei AWT, Swing, JavaFX & SWT 8
P AWT Einzelne Komponenten zur Laufzeit austauschen? AWT, Swing, JavaFX & SWT 3
D [Swing] Anordnung von Komponenten mit GridLayout Manager AWT, Swing, JavaFX & SWT 13
F Gebundene Eigenschaften bei Komponenten mit NetBeans verarbeiten AWT, Swing, JavaFX & SWT 3
H LayoutManager Probleme mit Positionierung/Abständen der Komponenten AWT, Swing, JavaFX & SWT 14
dereki2000 Swing JFrame nah hinzufügen von Komponenten akualisieren. AWT, Swing, JavaFX & SWT 2
L Swing Komponenten erst nach Resize sichtbar AWT, Swing, JavaFX & SWT 2
S Swing Panel übernimmt komponenten von anderem AWT, Swing, JavaFX & SWT 7
T Reihenfolge der Komponenten im einem JFrame AWT, Swing, JavaFX & SWT 8
P Gleichmäßige Anodnung von Komponenten im migLayout AWT, Swing, JavaFX & SWT 2
DaCrazyJavaExpert Swing Komponenten genauer anordnen. AWT, Swing, JavaFX & SWT 13
P Größe und Ausrichtung von Komponenten festlegen AWT, Swing, JavaFX & SWT 13
MaxG. Swing Swing Komponenten zur Laufzeit hinzufügen AWT, Swing, JavaFX & SWT 2
D Swing Komponenten Anordnung eines Panels in Verbindung eines weiteren Panels AWT, Swing, JavaFX & SWT 9
N Swing Wie Programm strukturieren? (Dynamisch Komponenten hinzufügen) AWT, Swing, JavaFX & SWT 1
Neumi5694 LookAndFeel Look & Feel nicht angezeigter Komponenten ändern AWT, Swing, JavaFX & SWT 6
R Komponenten von JPanel bleiben unsichtbar AWT, Swing, JavaFX & SWT 2
D JavaFX Welche Komponenten vermisst ihr? Welche wären essenziell notwendig? AWT, Swing, JavaFX & SWT 8
M Datei mit Komponenten einbinden AWT, Swing, JavaFX & SWT 7
T SWT Externer zugrif auf SWT Komponenten AWT, Swing, JavaFX & SWT 3
Shams Probleme bei dem Hinzufügen von Komponenten zu einem JFrame AWT, Swing, JavaFX & SWT 3
J MouseOver bei Komponenten AWT, Swing, JavaFX & SWT 9
S Größe der Komponenten, beim ändern der größe des Frames, mit ändern! AWT, Swing, JavaFX & SWT 2
D LayoutManager GUI skalieren und deren Komponenten mit Grid(Bag)Layout-Manager. AWT, Swing, JavaFX & SWT 5
G Komponenten vergrößern sich nicht trotz Layoutmanager AWT, Swing, JavaFX & SWT 24
M JavaFX Scenebuilder eigene Komponenten AWT, Swing, JavaFX & SWT 8
A Swing per JComboBox gewünschtes Attribut auswählen und Komponenten passen sich an AWT, Swing, JavaFX & SWT 7
A JavaFX Eigene Komponenten im Scene Builder AWT, Swing, JavaFX & SWT 0
Q Swing Fenster updaten - Hinzugefügte Komponenten darstellen AWT, Swing, JavaFX & SWT 3
S BoxLayout: Anordnung der Komponenten links statt zentriert AWT, Swing, JavaFX & SWT 0
Bartertown JTable - Verschiedene Komponenten in einer Spalte unterbringen AWT, Swing, JavaFX & SWT 3
U Frame zeigt keine Komponenten AWT, Swing, JavaFX & SWT 7
G Applet Applet Komponenten flackern AWT, Swing, JavaFX & SWT 10
K LayoutManager Probleme mit 2 Komponenten AWT, Swing, JavaFX & SWT 9
M Komponenten übereinander AWT, Swing, JavaFX & SWT 7
H Swing Getter für GUI-Komponenten AWT, Swing, JavaFX & SWT 3
B Komponenten in Fenster verdrängen sich untereinander AWT, Swing, JavaFX & SWT 6
N Komponenten übereinander AWT, Swing, JavaFX & SWT 3
S Anordnung von GUI-Komponenten mit LayouManger (Problem beim anzeigen von JTextField) AWT, Swing, JavaFX & SWT 5
M Swing Komponenten enablen? AWT, Swing, JavaFX & SWT 4
X Java Komponenten jeder Zeit hinzufügen können AWT, Swing, JavaFX & SWT 3
S View-Komponenten im Controller bekannt machen AWT, Swing, JavaFX & SWT 7
D Grafische Komponenten komplett neu aufbauen (Neukonstruktion) AWT, Swing, JavaFX & SWT 5
A AWT Komponenten in JavaFX einbetten AWT, Swing, JavaFX & SWT 9
M Swing Komponenten erscheinen beim darüberfahren? AWT, Swing, JavaFX & SWT 7
H Komponenten unmittelbar nach dem Ausführen teilweise unsichtbar AWT, Swing, JavaFX & SWT 3
K GUI in Komponenten aufteilen (MVC) AWT, Swing, JavaFX & SWT 2
W Funktionen, sowie aufruf einiger Komponenten AWT, Swing, JavaFX & SWT 4
J Alle Komponenten eines JFrames durchlaufen AWT, Swing, JavaFX & SWT 2
R Swing Komponenten bleiben bei Animation unsichtbar AWT, Swing, JavaFX & SWT 7
T Unter JPanel liegende Komponenten "totschalten" AWT, Swing, JavaFX & SWT 5
C Swing Reihenfolge der Initialisierung von Komponenten AWT, Swing, JavaFX & SWT 6
Asamandra LayoutManager GridBagLayout - Komponenten (mit fill?) vergrößern aber Proportionen dabei erhalten? AWT, Swing, JavaFX & SWT 3
B Swing Komponenten auf JApplet setSize AWT, Swing, JavaFX & SWT 7
B Swing Komponenten auf JApplet setSize AWT, Swing, JavaFX & SWT 2
W Bildgröße automatisch an Komponenten anpassen AWT, Swing, JavaFX & SWT 3
TheWhiteShadow Swing Komponenten organisieren AWT, Swing, JavaFX & SWT 9
S Überlappung zweier Komponenten AWT, Swing, JavaFX & SWT 12
Z größe der komponenten bestimmen AWT, Swing, JavaFX & SWT 16
C GUI-Komponenten skalieren AWT, Swing, JavaFX & SWT 10
M Seltsames Problem mit Resize eines Fensters und seiner Komponenten AWT, Swing, JavaFX & SWT 2
D Swing Komponenten verstecken AWT, Swing, JavaFX & SWT 4
X Swing Resizing der Komponenten innheralb eines Panels AWT, Swing, JavaFX & SWT 2
T Swing Font für alle Komponenten ändern AWT, Swing, JavaFX & SWT 2
S Problem mit Swing Komponenten AWT, Swing, JavaFX & SWT 11
A Swing Alle Komponenten auf JFrame ermitteln AWT, Swing, JavaFX & SWT 4
E LookAndFeel Eigene Komponenten mit Synth L&F stylen AWT, Swing, JavaFX & SWT 2
S Swing Frame und Klasse extends JPanel - Komponenten zur Laufzeit austauschen AWT, Swing, JavaFX & SWT 18
S JButton und textfield.setText - Komponenten über-/verdecken sich AWT, Swing, JavaFX & SWT 15
M Komponenten übereinander prüfen AWT, Swing, JavaFX & SWT 3
W LayoutManager GridBag richtig nutzen - Komponenten richtig anordnen und automatisch vergrößern AWT, Swing, JavaFX & SWT 5
M Komponenten in anderer Reihenfolge anzeigen AWT, Swing, JavaFX & SWT 4
G swing Komponenten verrutschen ständig... AWT, Swing, JavaFX & SWT 6
D Mit GridBayLayout Komponenten anordnen AWT, Swing, JavaFX & SWT 6
N Window transparent, Komponenten nicht transparent AWT, Swing, JavaFX & SWT 11
R Farbänderung von Komponenten wird nicht wirksam AWT, Swing, JavaFX & SWT 7
P Swing Hierachie oder Reihenfolge von Komponenten AWT, Swing, JavaFX & SWT 5
T Sich überlappende Komponenten AWT, Swing, JavaFX & SWT 2
D Swing Probleme beim Anzeigen der einzelnen Komponenten AWT, Swing, JavaFX & SWT 16
R Swing Komponenten klein angezeigt AWT, Swing, JavaFX & SWT 10
D Swing Swing Komponenten verschieben AWT, Swing, JavaFX & SWT 7
B Komponenten nach Skalierung nicht mehr ansprechbar AWT, Swing, JavaFX & SWT 9
Kr0e AWT Komponenten in JPanel AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen

Neue Themen


Oben