[ 
https://issues.apache.org/jira/browse/IMAGING-95?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Damjan Jovanovic resolved IMAGING-95.
-------------------------------------

       Resolution: Fixed
    Fix Version/s: 1.0

Fixed. Thank you for your patch!

                
> Some tiff processing takes very long
> ------------------------------------
>
>                 Key: IMAGING-95
>                 URL: https://issues.apache.org/jira/browse/IMAGING-95
>             Project: Commons Imaging
>          Issue Type: Bug
>          Components: Format: TIFF
>    Affects Versions: 1.0
>            Reporter: Amit Gupta
>             Fix For: 1.0
>
>         Attachments: tiff_perf_fix2.patch
>
>
> org.apache.commons.imaging.formats.tiff.TiffReader.getTiffRawImageData(ByteSource,
>  TiffDirectory)     226635  1
> org.apache.commons.imaging.common.bytesource.ByteSourceInputStream.getBlock(int,
>  int) 226588  5616
> org.apache.commons.imaging.common.BinaryFileFunctions.skipBytes(InputStream, 
> int)     226526  5616
> org.apache.commons.imaging.common.BinaryFileFunctions.skipBytes(InputStream, 
> int, String)     226526  5616
> org.apache.commons.imaging.common.bytesource.ByteSourceInputStream$CacheReadingInputStream.read(byte[],
>  int, int)     226526  188656860
> org.apache.commons.imaging.common.bytesource.ByteSourceInputStream$CacheBlock.getNext()
>        64581   188651244
> skip bytes is being called repeatedly again and again, last column is 
> invocation count in one call tree. Second column is total number of time 
> taken by that method in that call tree..
> and skip method is not overridden 
> org.apache.commons.imaging.common.bytesource.ByteSourceInputStream.CacheReadingInputStream
>  and default implementation of InputStream tries to use read method (which is 
> overridden in CacheReadingInputStream) to skip. 
> In case of a tiff, which has large number of strips, skip is repeatedly 
> called and use of read is inefficient as it tried to do a System.arraycopy. 
> array copy is not needed in case of skip operation, as the bytes were already 
> read in block/cached, we can simply jump the pointer (block by block)

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to