BufferedImageInputStream performance optimizations.

This commit is contained in:
Harald Kuhr 2020-11-30 17:54:21 +01:00
parent 1fe0bdd41f
commit c7d2f422b8

View File

@ -58,7 +58,9 @@ public final class BufferedImageInputStream extends ImageInputStreamImpl impleme
private ImageInputStream stream; private ImageInputStream stream;
private ByteBuffer buffer; private ByteBuffer buffer;
private ByteBuffer integralCache = ByteBuffer.allocate(8);
private final ByteBuffer integralCache = ByteBuffer.allocate(8);
private final byte[] integralCacheArray = integralCache.array();
public BufferedImageInputStream(final ImageInputStream pStream) throws IOException { public BufferedImageInputStream(final ImageInputStream pStream) throws IOException {
this(pStream, DEFAULT_BUFFER_SIZE); this(pStream, DEFAULT_BUFFER_SIZE);
@ -97,11 +99,11 @@ public final class BufferedImageInputStream extends ImageInputStreamImpl impleme
if (!buffer.hasRemaining()) { if (!buffer.hasRemaining()) {
fillBuffer(); fillBuffer();
}
if (!buffer.hasRemaining()) { if (!buffer.hasRemaining()) {
return -1; return -1;
} }
}
bitOffset = 0; bitOffset = 0;
streamPos++; streamPos++;
@ -172,21 +174,21 @@ public final class BufferedImageInputStream extends ImageInputStreamImpl impleme
@Override @Override
public short readShort() throws IOException { public short readShort() throws IOException {
readFully(integralCache.array(), 0, 2); readFully(integralCacheArray, 0, 2);
return integralCache.getShort(0); return integralCache.getShort(0);
} }
@Override @Override
public int readInt() throws IOException { public int readInt() throws IOException {
readFully(integralCache.array(), 0, 4); readFully(integralCacheArray, 0, 4);
return integralCache.getInt(0); return integralCache.getInt(0);
} }
@Override @Override
public long readLong() throws IOException { public long readLong() throws IOException {
readFully(integralCache.array(), 0, 8); readFully(integralCacheArray, 0, 8);
return integralCache.getLong(0); return integralCache.getLong(0);
} }