[ 
https://issues.apache.org/jira/browse/PDFBOX-2117?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14018828#comment-14018828
 ] 

Petr Slaby commented on PDFBOX-2117:
------------------------------------

I have measured the times needed when calling PDFToImage -resolution 300 
<filename> with the pdf files you mentioned. I have used 
System.currentTimeMillis() for the measurement. Here are the results:

||File||Original||Patched||
|Pdf Graphiland Tp.pdf |141,7s|45,8s|
|missing_image.pdf|410,9s|248,3s|
|asy-shade.pdf|2.3s|2.0s|
|color_gradient.pdf|77,734s|77,923s (not a single cache hit with this one)|
|shading_pattern.pdf|78,5s|54,5s|
|Shading2Function2text.pdf|67,7s|4,7s|

As for your student - sorry for that, I must admit that I did not search the 
issues before diving into the profiler results. I have spent one and half day 
with this so far, mostly waiting for the test run to complete. I hope I did not 
spoil the whole summer of coding with that. Compare my results with opening the 
file in Acrobat Reader - there must be a lot to do still. (I know it is not 
comparable, but that is what my customers always do). 

Radial shading is completely resistant to caching of the values, I did not get 
any improvement on that. I imagine someone good in math should be able to 
implement the following idea. The axial shading is a gradient following a line 
- horizontal, vertical or diagonal. Radial shading has a similar line starting 
in the middle and going to the border of the circle. It should be possible to 
(pre)compute just the values on this line and then, with each request in 
getRaster(), just find the right position on the scan line and get the values 
from it. Do all the math in integers rather than floats and you should get much 
closer to the "nothing to optimize" state. 


> AxialShadingContext is slow
> ---------------------------
>
>                 Key: PDFBOX-2117
>                 URL: https://issues.apache.org/jira/browse/PDFBOX-2117
>             Project: PDFBox
>          Issue Type: Improvement
>            Reporter: Petr Slaby
>         Attachments: AxialShading.patch, Shading2Function2text.pdf, 
> asy-shade.pdf, color_gradient.pdf, shading_pattern.pdf
>
>
> AxialShadingContext#getRaster() is on top of profiler hot spots in documents 
> that use an axial shading. Inside it, the slowest part is calling 
> PDColorSpaceRGB#toRGB() and PDFunctionType3#eval() (in this order).
>   



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to