JavaFX Rendering beschleunigen

ToBJo

Mitglied
Hallo zusammen,

habt ihr eine Idee wie ich das Rendering meiner JavaFX Applikation beschleunigen kann.
Spricht gibt es irgendwelche Compileroptionen oder ähnliches? Das Rendern meines ScalabaleContentPanes mit ca. 200-250 Kind Elementen dauert nämlich leider jedes Mal beim initialisieren ca. 4-5 Sekunden. DragNDrop funktioniert allerdings einwandfrei. Sprich "partielle" Änderungen sind kein Problem, sondern nur das erste Rendering des gesamten Panes...

Gruß Tobias
 

dzim

Top Contributor
Da ich weder Code noch Set Up kenne, kann ich nur sagen: Keine Ahnung!?

Compileroptionen sicher nicht. Eventuell System-Properties, die eventuell das Rendering-Target (OpenGL, Software, ...) auswählen können, habe ich aber noch nie gebraucht. Für mich klingt es eher danach, als ob du zu viel Arbeit auf dem UI-Thread machst. Was anderes kann man - wie gesagt - ohne Code oder wenigstens einem kleinen Beispiel, nicht sagen.
 

ToBJo

Mitglied
Hey dzim,

ich versuche es mal kurz zu beschreiben, da der Code zu umfangreich ist. Das im UI-Thread zuviel passiert kann gut sein.

Es werden aus einer Oracle Datenbank Objekte mithilfe eines OR-Mappers geladen (ca. 800-2000). Das laden passiert in einem Hintergrund Thread und ist nach Performance Analyse bereits nach ca. 0,5 Sekunden im Extremfall abgeschlossen. Diese Entitys haben zusätzlich noch ein Interface implementiert, dass sie auf ein Pane mit Position gezeichnet werden können.
Ergebnis des ganzen ist ein grafischer Workflow. Den man per Drag n Drop neu verbinden kann und auch verschieben kann. Das Zeichnen nimmt allerdings die 3-4 restlichen Sekunden in Anspruch.
Das Pane auf dem das ganze gezeichnet wird ist ein ScalableContentPane von JFXtras und die Objekte werden diesem als Item hinzugefügt. Kann ich das Pane von JFXtras Programmseitig beeinflussen, sodass er nicht rendert solange ich Elemente hinzufüge? Weil ich denke mal, er zeichnet ja jedes mal das Pane neu wenn ich ein neues Element hinzufüge. Mir würde es aber reichen, wenn er es am Ende einmal zeichnet und nicht jedes mal. Den Thread von dem JFXtras Pane kann ich ja auch nicht beeinflussen gehe ich mal aus, da das Rendering ja von diesem übernommen wird??
Hoffe ich habs halbwegs verständlich erklären können :D

Gruß Tobias
 

dzim

Top Contributor
Ja, ungefähr verstanden. Und ja, ich denke du könntest absolut recht haben, dass die permanenten Updates, das Rendering der Pane in die Knie zwingen. Versuche es mal so: Sammle alle Items in deinem Thread in einer Liste und triggere dann (via Platform#runLater(Runnable)), dass alle Items auf einmal reingegeben werden:
Pseudocode:
Code:
Pane#getItems()#addAll(myFullList);
Vielleicht hilft das ja...
 

Ähnliche Java Themen

Neue Themen


Oben