[External] : Re: Preload fxml to avoid slow show()
Andy Goryachev
andy.goryachev at oracle.com
Fri Aug 25 23:30:56 UTC 2023
1. which version of jdk/jfx are you using?
2. have you tried profiling your application during FXML loading?
3. have you tried looking at the heap allocation (using VisualVM or a similar tool), to see where the bulk of memory consumption is?
-andy
From: Davide Perini <perini.davide at dpsoftware.org>
Date: Friday, August 25, 2023 at 16:16
To: Andy Goryachev <andy.goryachev at oracle.com>, openjfx-dev at openjdk.org <openjfx-dev at openjdk.org>
Subject: Re: [External] : Re: Preload fxml to avoid slow show()
I tried it, 99% of the heavy lift comes from FXML load.
I have 80Kb of FXML files, nothing particularly big,
I measured the laoding time on a 13900K CPU and it requires 1.8s.
Once loaded, I don't know how this is possible, my apps sucks 100MB more RAM but after the first load,
opening/closing the tab pane is much faster.
I sincerely can't understand how a tabpane can suck 100MB od RAM and how 80Kb of FXML can require almoast 2 seconds to load
on the world fastest consumer CPU (single thread).
I see that there are dozens of similar threads on the internet so this should be a known problem
and at this point, I think that I'm out of luck.
Thank you anyway,
Davide
Il 25/08/2023 23:55, Andy Goryachev ha scritto:
Another suggestion might be to load tabs lazily. I don't think FXML "pre-loading" is possible.
-andy
From: Davide Perini <perini.davide at dpsoftware.org><mailto:perini.davide at dpsoftware.org>
Date: Friday, August 25, 2023 at 14:31
To: Andy Goryachev <andy.goryachev at oracle.com><mailto:andy.goryachev at oracle.com>, openjfx-dev at openjdk.org<mailto:openjfx-dev at openjdk.org> <openjfx-dev at openjdk.org><mailto:openjfx-dev at openjdk.org>
Subject: [External] : Re: Preload fxml to avoid slow show()
My tab pane is very complex with a lot of tabs,
having an FXML is very welcomed.
Thanks
Davide
Il 25/08/2023 16:45, Andy Goryachev ha scritto:
You can try creating the scene graph programmatically, thus avoiding FXML entirely.
-andy
From: openjfx-dev <openjfx-dev-retn at openjdk.org><mailto:openjfx-dev-retn at openjdk.org> on behalf of Davide Perini <perini.davide at dpsoftware.org><mailto:perini.davide at dpsoftware.org>
Date: Friday, August 25, 2023 at 00:45
To: openjfx-dev at openjdk.org<mailto:openjfx-dev at openjdk.org> <openjfx-dev at openjdk.org><mailto:openjfx-dev at openjdk.org>
Subject: Preload fxml to avoid slow show()
Hi,
I have a tabpane with 15 tabs, every tab has his own controller and it's
pretty crowded.
On a 13900K CPU, show() method requires more than 750ms,
this feels laggy...
After the first show() call, loading the tab pane is much faster...
Is there a way to "preload" an fxml?
I tried to show() and hide() it immediately and it seems to help,
but what is the best way to do it?
Thanks
Davide
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/openjfx-dev/attachments/20230825/153db27e/attachment-0001.htm>
More information about the openjfx-dev
mailing list