Recently JDK-8129582 [1] started really affecting me, with startup speed and overall responsiveness becoming really bad.
Digging into it, I have found most time is wasted in com.sun.javafx.text.GlyphLayout.layout (as represented by PangoGlyphLayout on my Linux machine), which in turn is called by com.sun.javafx.text.PrismTextLayout.shape, which has: if (run.isComplex()) { /* Use GlyphLayout to shape complex text */ layout.layout(run, font, strike, chars); } else { ... if (layoutCache == null) { ... } else { ... } } which to my very naive reading seems as if while non-complex (with all BiDi text considered complex) glyph runs are cached, complex runs are never cached, which forces re-calculation every time. I'm trying to read and understand this part better, but could it be possible that this is the issue? How feasible would it be to have a layout cache for complex runs, or at least non-complex BiDi runs? Thanks, Itai. [1]: https://bugs.openjdk.java.net/browse/JDK-8129582