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.dav...@dpsoftware.org>
*Date: *Friday, August 25, 2023 at 14:31
*To: *Andy Goryachev <andy.goryac...@oracle.com>,
openjfx-dev@openjdk.org <openjfx-dev@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-r...@openjdk.org>
<mailto:openjfx-dev-r...@openjdk.org> on behalf of Davide Perini
<perini.dav...@dpsoftware.org> <mailto:perini.dav...@dpsoftware.org>
*Date: *Friday, August 25, 2023 at 00:45
*To: *openjfx-dev@openjdk.org <openjfx-dev@openjdk.org>
<mailto:openjfx-dev@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