Amit Gupta created IMAGING-95:
---------------------------------
Summary: 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
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
in 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