Improving Min/Max performance in “e4-on-JavaFX” applications

When it comes to performance in JavaFX one of the biggest problems is that if you detach and reattach a big SceneGraph-Part you run:

  • CSS-Pass
  • Layout-Pass

So in general one should avoid those operations as much as possible but there are situations you can’t get something implemented without doing exactly this kind of thing.

In the current architecture of e(fx)clipse we need to use this reparenting in case of minimizing/maximizing certain areas of your e4-on-JavaFX application which might lead to a very poor user experience if you eg have a MPartStack with many complex substructures (like eg our code editor).

Today we took a closer look for one of our customers to find out if we – the e(fx)clipse – framework can do anything to fix that problem and after some experiments we managed to come up with a solution who allows us to reparent the content of an MPartStack in constant time:

In general I’d say that such optimization should not be required and JavaFX CSS and Layout performance HAS to be improved in general and JavaFX-Components have to get smarter in not running CSS-Passes on SG-Parts who are currently not showing.

This entry was posted in e(fx)clipse, Uncategorized. Bookmark the permalink.

4 Responses to Improving Min/Max performance in “e4-on-JavaFX” applications

  1. Dmitry says:

    can you please give some details about optimizations you’ve made.

    We have very similar issue in our FX application when doing reparent of big nodes graph. We have a set of prepared off-scene nodes and putting one of them on-scene setting it as child of “application root” container. Such operation seems to be very expensive depending on node tree size. At this moment application freezes for one-two seconds.

    Thank you in advance.

  2. Pingback: e(fx)clipse support for Java9 | Tomsondev Blog

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.