commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Damjan Jovanovic (JIRA)" <j...@apache.org>
Subject [jira] [Resolved] (IMAGING-95) Some tiff processing takes very long
Date Wed, 24 Oct 2012 05:24:12 GMT

     [ 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

Mime
View raw message