<div dir="auto">Phil,<div dir="auto"><br><div dir="auto">If you look at the given pdf file, it has large images that exceed 2k so such ones may be more costly to convert.</div><div dir="auto"><br></div><div dir="auto">As jpeg decoder in openjdk11 is different than oraclejdk8, it may cause more ColorConvertOp filter operations ... if color profiles are different.</div><div dir="auto"><br></div><div dir="auto">Anyway this performance is not related to Marlin renderer, so I can not help much except in its diagnostic.</div><div dir="auto"><br></div><div dir="auto">Cheers,</div><div dir="auto">Laurent</div></div></div><br><div class="gmail_quote"><div dir="ltr">Le mar. 2 oct. 2018 à 23:35, Philip Race <<a href="mailto:philip.race@oracle.com">philip.race@oracle.com</a>> a écrit :<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div text="#000000" bgcolor="#FFFFFF">
I've spent some time examining what pdfbox is passing to
ColorConvertOp<br>
It is called about 10 or 11 times in this test with images typically
1-2K in each dimension.<br>
The input image is a Custom BufferedImage which uses an
ICC_ColorSpace constructed<br>
from a color profile file that is embedded in pdfbox which is an
open source equivalent<br>
of what Acrobat uses. It has a 4 component raster and is opaque<br>
<br>
This is filtered into a 3 component standard INT_RGB ColorModel.<br>
<br>
I've distilled this down into a small program which has an copy of
the method<br>
that is defined in pdfbox and is invoking the supposedly slow
ColorConvertOp.<br>
<br>
So I believe this is all exactly what is happening in pdfbox.<br>
<br>
What I find is that it is actually much faster on JDK11 than JDK 8.<br>
<br>
prrubuntu:~$ ~/jdk-11/bin/java CConv <br>
4881<br>
prrubuntu:~$ ~/jdk8u181/bin/java CConv<br>
12529<br>
<br>
<br>
I can't say why that would be but the results are clear.<br>
So I am left to suppose that pdfbox really is doing something
different in 8 vs 11.<br>
Or that this not the real problem. What do others see ?<br>
<br>
I've attached the program. The 1Mb color profile file can be got
from the pdfbox sources.<br>
<br>
-phil.<br>
<br>
<br>
On 10/2/18, 9:35 AM, Laurent Bourgès wrote:
<blockquote type="cite">
<div dir="auto">
<div>Hi Daniel,</div>
<div dir="auto">
<div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div><br>
</div>
<div>Let's not compare apples and oranges. What I
can see it takes the same route and
behave similarly.</div>
</div>
</div>
</div>
</blockquote>
</div>
</div>
<div dir="auto"><br>
</div>
<div dir="auto"> I agree, I did not take enough time to get
accurate profiles, sorry.<br>
</div>
<div dir="auto"><br>
</div>
<div dir="auto">
<div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div><br>
</div>
<div>If you look at</div>
<div><a href="http://uhash.com/java_reg/Call_Tree_java_8.html" rel="noreferrer noreferrer" target="_blank">http://uhash.com/java_reg/Call_Tree_java_8.html</a><br>
</div>
<div><a href="http://uhash.com/java_reg/Call_Tree_java_11.html" rel="noreferrer noreferrer" target="_blank">http://uhash.com/java_reg/Call_Tree_java_11.html</a><br>
</div>
<div><br>
</div>
<div>You can see that ConvertOp.filter takes 1.5s
longer on Java 11.</div>
</div>
</div>
</div>
</blockquote>
</div>
</div>
<div dir="auto"><br>
</div>
<div dir="auto">I confirm: 1.8s vs 300ms.</div>
<div dir="auto"><br>
</div>
<div dir="auto">Philip, do you know what could have change in
this 2d area ?</div>
<div dir="auto"><br>
</div>
<div dir="auto">I imagine ColorConvertOp delegates to native
code so color profile (ICC) or hidpi support may have an
impact here (or just compiler options may be different) ...</div>
<div dir="auto"><br>
</div>
<div dir="auto">If needed, I could profile native code using
oprofile / perf.</div>
<div dir="auto"><br>
</div>
<div dir="auto">Laurent</div>
</div>
</blockquote>
</div>
</blockquote></div>