[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>&nbsp;</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>&nbsp;</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>&nbsp;</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 \
&lt;philip.race@oracle.com&gt; <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 \
&lt;ebakke@ultorg.com&gt;<br> <b><span style="font-weight:bold">Cc:</span></b> 2d-dev \
&lt;2d-dev@openjdk.java.net&gt;<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>&nbsp;</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">&nbsp;</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">&nbsp;<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">&nbsp;<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">&nbsp;<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">&nbsp;<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">&nbsp;<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">&nbsp;<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