[prev in list] [next in list] [prev in thread] [next in thread]
List: openjdk-2d-dev
Subject: Re: [OpenJDK 2D-Dev] LineBreakMeasurer 7-70x slower on Java 10 compared to Java 8
From: Eirik Bakke <ebakke () ultorg ! com>
Date: 2018-09-09 0:23:30
Message-ID: BN6PR20MB12040FC293DDBF0912BC23FDA1060 () BN6PR20MB1204 ! namprd20 ! prod ! outlook ! com
[Download RAW message or body]
Ah, yes, I missed that one--thank you! Great to hear.
(Otherwise very happy to get a shiny new font shaping engine in Java--thank=
s for your efforts!)
-- Eirik
From: Philip Race <philip.race@oracle.com>
Sent: Saturday, September 8, 2018 6:03 PM
To: Eirik Bakke <ebakke@ultorg.com>
Cc: 2d-dev <2d-dev@openjdk.java.net>
Subject: Re: [OpenJDK 2D-Dev] LineBreakMeasurer 7-70x slower on Java 10 com=
pared to Java 8
You missed https://bugs.openjdk.java.net/browse/JDK-8202131
It is on my to-do list ..
-phil.
On 9/8/18, 1:55 PM, Eirik Bakke wrote:
Hi, 2D-dev.
Switching from Java 1.8.0_172 to Java 10.0.2, at least on Windows 10, it ha=
s become very expensive to call LineBreakMeasurer.nextLayout--it takes abou=
t 0.8ms to render any string, even if it's just a single character. That's =
between 7 and 70(!) times slower than on Java 8, depending on how many stri=
ngs you need to render. See the following performance test (my results past=
ed at the end):
https://gist.github.com/eirikbakke/81eec72221c9d7d8fc0b4afa9c54a163
This is a problem in our visualization app, which uses LineBreakMeasurer to=
produce a TextLayout once for every cell in a large spreadsheet-like data =
layout. Operations that were previously quick or instantaneous now introduc=
e bad latencies in the user interface.
I saw the related bug https://bugs.openjdk.java.net/browse/JDK-8186317 and =
its duplicate https://bugs.openjdk.java.net/browse/JDK-8196666, but they ar=
e both closed.
Is this a known regression, and are there any plans to fix it?
-- Eirik
[Attachment #3 (text/html)]
<html xmlns:v="urn:schemas-microsoft-com:vml" \
xmlns:o="urn:schemas-microsoft-com:office:office" \
xmlns:w="urn:schemas-microsoft-com:office:word" \
xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" \
xmlns="http://www.w3.org/TR/REC-html40"> <head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri",sans-serif;
color:black;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:#0563C1;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:#954F72;
text-decoration:underline;}
p.msonormal0, li.msonormal0, div.msonormal0
{mso-style-name:msonormal;
mso-margin-top-alt:auto;
margin-right:0in;
mso-margin-bottom-alt:auto;
margin-left:0in;
font-size:11.0pt;
font-family:"Calibri",sans-serif;
color:black;}
span.EmailStyle18
{mso-style-type:personal;
font-family:"Calibri",sans-serif;
color:windowtext;}
span.EmailStyle19
{mso-style-type:personal;
font-family:"Calibri",sans-serif;
color:windowtext;}
span.EmailStyle20
{mso-style-type:personal-reply;
font-family:"Calibri",sans-serif;
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body bgcolor="white" lang="EN-US" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal"><font size="2" color="black" face="Calibri"><span \
style="font-size:11.0pt;color:windowtext">Ah, yes, I missed that one--thank you! \
Great to hear.<o:p></o:p></span></font></p> <p class="MsoNormal"><font size="2" \
color="black" face="Calibri"><span \
style="font-size:11.0pt;color:windowtext"><o:p> </o:p></span></font></p> <p \
class="MsoNormal"><font size="2" color="black" face="Calibri"><span \
style="font-size:11.0pt;color:windowtext">(Otherwise very happy to get a shiny new \
font shaping engine in Java--thanks for your efforts!)<o:p></o:p></span></font></p> \
<p class="MsoNormal"><font size="2" color="black" face="Calibri"><span \
style="font-size:11.0pt;color:windowtext"><o:p> </o:p></span></font></p> <p \
class="MsoNormal"><font size="2" color="black" face="Calibri"><span \
style="font-size:11.0pt;color:windowtext">-- Eirik<o:p></o:p></span></font></p> <p \
class="MsoNormal"><font size="2" color="black" face="Calibri"><span \
style="font-size:11.0pt;color:windowtext"><o:p> </o:p></span></font></p> <div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><font size="2" color="black" face="Calibri"><span \
style="font-size:11.0pt;color:windowtext;font-weight:bold">From:</span></font></b><font \
color="black"><span style="color:windowtext"> Philip Race \
<philip.race@oracle.com> <br>
<b><span style="font-weight:bold">Sent:</span></b> Saturday, September 8, 2018 6:03 \
PM<br> <b><span style="font-weight:bold">To:</span></b> Eirik Bakke \
<ebakke@ultorg.com><br> <b><span style="font-weight:bold">Cc:</span></b> 2d-dev \
<2d-dev@openjdk.java.net><br> <b><span \
style="font-weight:bold">Subject:</span></b> Re: [OpenJDK 2D-Dev] LineBreakMeasurer \
7-70x slower on Java 10 compared to Java 8<o:p></o:p></span></font></p> </div>
</div>
<p class="MsoNormal"><font size="2" color="black" face="Calibri"><span \
style="font-size:11.0pt"><o:p> </o:p></span></font></p> <p \
class="MsoNormal"><font size="2" color="black" face="Calibri"><span \
style="font-size:11.0pt">You missed <a \
href="https://bugs.openjdk.java.net/browse/JDK-8202131">https://bugs.openjdk.java.net/browse/JDK-8202131</a><br>
<br>
It is on my to-do list ..<br>
<br>
-phil.<br>
<br>
On 9/8/18, 1:55 PM, Eirik Bakke wrote: <o:p></o:p></span></font></p>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<p class="MsoNormal"><font size="2" color="black" face="Calibri"><span lang="NO-BOK" \
style="font-size:11.0pt">Hi, 2D-dev.</span></font><font size="2"><span \
style="font-size:10.0pt"><o:p></o:p></span></font></p> <p class="MsoNormal"><font \
size="2" color="black" face="Calibri"><span lang="NO-BOK" \
style="font-size:11.0pt"> </span></font><font size="2"><span \
style="font-size:10.0pt"><o:p></o:p></span></font></p> <p class="MsoNormal"><font \
size="2" color="black" face="Calibri"><span style="font-size:11.0pt">Switching from \
Java 1.8.0_172 to Java 10.0.2, at least on Windows 10, it has become very expensive \
to call LineBreakMeasurer.nextLayout--it takes about 0.8ms to render any string, \
even if it's just a single character. That's between 7 and 70(!) times slower than on \
Java 8, depending on how many strings you need to render. See the following \
performance test (my results pasted at the end):<o:p></o:p></span></font></p> <p \
class="MsoNormal"><font size="2" color="black" face="Calibri"><span \
style="font-size:11.0pt"> <o:p></o:p></span></font></p> <p \
class="MsoNormal"><font size="2" color="black" face="Calibri"><span \
style="font-size:11.0pt"><a \
href="https://gist.github.com/eirikbakke/81eec72221c9d7d8fc0b4afa9c54a163">https://gis \
t.github.com/eirikbakke/81eec72221c9d7d8fc0b4afa9c54a163</a><o:p></o:p></span></font></p>
<p class="MsoNormal"><font size="2" color="black" face="Calibri"><span \
style="font-size:11.0pt"> <o:p></o:p></span></font></p> <p \
class="MsoNormal"><font size="2" color="black" face="Calibri"><span \
style="font-size:11.0pt">This is a problem in our visualization app, which uses \
LineBreakMeasurer to produce a TextLayout once for every cell in a large \
spreadsheet-like data layout. Operations that were previously quick or instantaneous \
now introduce bad latencies in the user interface.<o:p></o:p></span></font></p> <p \
class="MsoNormal"><font size="2" color="black" face="Calibri"><span \
style="font-size:11.0pt"> <o:p></o:p></span></font></p> <p \
class="MsoNormal"><font size="2" color="black" face="Calibri"><span \
style="font-size:11.0pt">I saw the related bug <a \
href="https://bugs.openjdk.java.net/browse/JDK-8186317">https://bugs.openjdk.java.net/browse/JDK-8186317</a> \
and its duplicate <a \
href="https://bugs.openjdk.java.net/browse/JDK-8196666">https://bugs.openjdk.java.net/browse/JDK-8196666</a>, \
but they are both closed.<o:p></o:p></span></font></p> <p class="MsoNormal"><font \
size="2" color="black" face="Calibri"><span \
style="font-size:11.0pt"> <o:p></o:p></span></font></p> <p \
class="MsoNormal"><font size="2" color="black" face="Calibri"><span \
style="font-size:11.0pt">Is this a known regression, and are there any plans to fix \
it?<o:p></o:p></span></font></p> <p class="MsoNormal"><font size="2" color="black" \
face="Calibri"><span style="font-size:11.0pt"> <o:p></o:p></span></font></p> <p \
class="MsoNormal"><font size="2" color="black" face="Calibri"><span \
style="font-size:11.0pt">-- Eirik<o:p></o:p></span></font></p> <p \
class="MsoNormal"><font size="2" color="black" face="Calibri"><span \
style="font-size:11.0pt"> <o:p></o:p></span></font></p> </blockquote>
</div>
</body>
</html>
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic