EM Font Size Performance

David Grieve david.grieve at oracle.com
Thu Apr 19 19:51:48 UTC 2018

I was thinking about https://bugs.openjdk.java.net/browse/JDK-8177635 
and https://bugs.openjdk.java.net/browse/JDK-8090462

There is also https://bugs.openjdk.java.net/browse/JDK-8187955

On 4/19/18 3:02 PM, Nir Lisker wrote:
> I think this is the issue: 
> https://bugs.openjdk.java.net/browse/JDK-8088615. There's also 
> https://bugs.openjdk.java.net/browse/JDK-8193445.
> - Nir
> On Thu, Apr 19, 2018 at 1:42 PM, David Grieve <david.grieve at oracle.com 
> <mailto:david.grieve at oracle.com>> wrote:
>     Resolving the relative size involves a lot of lookup. You have to
>     go up the scene-graph from the child to find a font style. If you
>     get to the root and haven't found a font style, then use the
>     default font. Performance in this area could be vastly improved by
>     passing the size from either a font style or the default font down
>     the scene-graph as styles are evaluated. There are other style
>     lookups that could benefit from this as well, resolving looked-up
>     colors for example. I believe I created a bug for this a long time
>     ago.
>     On 4/19/18 5:57 AM, Dean Wookey wrote:
>         Hi All,
>         In our application we add and remove a lot of nodes to the
>         scene graph
>         regularly, and also make use of em font sizes to scale certain
>         parts of our
>         application. We've noticed performance issues when adding
>         nodes to the
>         scene, and it seems to be related to em sizes in our css.
>         As a test we added a chain of 20 stackpanes to a root
>         stackpane. On the
>         root, we set a font size of 8pt via inline css. We then added
>         and removed a
>         new tableview from the deepest stackpane 500 times, waiting
>         for the node to
>         render after each add and remove.
>         In each of the experiments, we compared adding tableviews
>         without css and
>         adding tableviews with an inline css font size of 8pt. We then
>         tried
>         setting different font sizes in the stackpane chain.
>         I've attached sample code for these experiments.
>         The results (on jdk 9.0.4 - jdk 10 was similar) are as follows:
>         Setting a 1em font size on all stackpanes except the root.
>         With font on tableview: 14707ms
>         Without font on tableview: 27725ms
>         Setting a 1em font size on the first child of the root only.
>         With font on tableview: 14221ms
>         Without font on tableview: 19187ms
>         Using the original setup with no additional fonts.
>         With font on tableview: 13990ms
>         Without font on tableview: 13847ms
>         It looks like using a relative font size has a large effect
>         performance
>         wise on descendant nodes. I would expect some amount of font
>         size caching
>         in the chain of stackpanes since I'm reusing the same chain and
>         adding/removing nodes from that chain repeatedly.
>         I'm not sure how valid my test is, or how much of an issue
>         this really is
>         in practice?
>         Dean

More information about the openjfx-dev mailing list