From c5a522abd21532ad7e2668e9302e742cce4ee8de Mon Sep 17 00:00:00 2001 From: Michael Diener Date: Thu, 24 Sep 2026 08:01:34 +0200 Subject: [PATCH] Reduce transient allocations when decoding CCSDS GRIB2 fields --- .../ucar/nc2/grib/grib2/Grib2DataReader.java | 60 +++++---- .../nc2/grib/grib2/TestGrib2CcsdsInput.java | 119 ++++++++++++++++++ .../grib/grib2/TestGrib2DataReaderCcsds.java | 119 ++++++++++++++++++ .../nc2/grib/grib2/ccsds-input-blocks.bin | Bin 0 -> 67574 bytes 4 files changed, 267 insertions(+), 31 deletions(-) create mode 100644 grib/src/test/java/ucar/nc2/grib/grib2/TestGrib2CcsdsInput.java create mode 100644 grib/src/test/java/ucar/nc2/grib/grib2/TestGrib2DataReaderCcsds.java create mode 100644 grib/src/test/resources/ucar/nc2/grib/grib2/ccsds-input-blocks.bin diff --git a/grib/src/main/java/ucar/nc2/grib/grib2/Grib2DataReader.java b/grib/src/main/java/ucar/nc2/grib/grib2/Grib2DataReader.java index ac0b5b0008..0b09c7d99e 100644 --- a/grib/src/main/java/ucar/nc2/grib/grib2/Grib2DataReader.java +++ b/grib/src/main/java/ucar/nc2/grib/grib2/Grib2DataReader.java @@ -11,6 +11,7 @@ import edu.ucar.unidata.compression.jna.libaec.LibAec; import edu.ucar.unidata.compression.jna.libaec.LibAec.AecStream; import java.nio.ByteBuffer; +import java.nio.ByteOrder; import javax.annotation.Nullable; import ucar.nc2.grib.GribNumbers; import ucar.nc2.grib.GribUtils; @@ -1085,12 +1086,9 @@ private float[] getData50002(RandomAccessFile raf, Grib2Drs.Type50002 gdrs) thro } private float[] getData42(RandomAccessFile raf, Grib2Drs.Type42 gdrs) throws IOException { - byte[] decodedData; - // read CCSDS encoded stream from message int encodedLength = dataLength - 5; - byte[] inputData = new byte[encodedLength]; - raf.readFully(inputData); + byte[] inputData = new byte[Math.min(encodedLength, 64 * 1024)]; float[] data; if (encodedLength > 0) { @@ -1103,8 +1101,13 @@ private float[] getData42(RandomAccessFile raf, Grib2Drs.Type42 gdrs) throws IOE AecStream aecStreamDecode = AecStream.create(gdrs.numberOfBits, gdrs.blockSize, gdrs.referenceSampleInterval, gdrs.compressionOptionsMask); - // load data from grib message into memory - inputMemory.write(0, inputData, 0, inputData.length); + // Fill native input memory with bounded Java scratch storage. + for (int offset = 0; offset < encodedLength;) { + int count = Math.min(inputData.length, encodedLength - offset); + raf.readFully(inputData, 0, count); + inputMemory.write(offset, inputData, 0, count); + offset += count; + } aecStreamDecode.setInputMemory(inputMemory); aecStreamDecode.setOutputMemory(outputMemory); @@ -1115,32 +1118,27 @@ private float[] getData42(RandomAccessFile raf, Grib2Drs.Type42 gdrs) throws IOE System.out.printf("AEC Error: %s%n", ok); } - // read decoded data from native memory - decodedData = new byte[nbytesPerSample * totalNPoints]; - outputMemory.read(0, decodedData, 0, decodedData.length); - } - - // will use this to read out a long value using nbytesPerSample bytes - // see long getNextLong(ByteBuffer bb, int numberOfBytes) - ByteBuffer bb = ByteBuffer.wrap(decodedData); - - // decode following regulation 92.9.4, Note 4 - int D = gdrs.decimalScaleFactor; - float DD = (float) Math.pow((double) 10, (double) D); - float R = gdrs.referenceValue; - int E = gdrs.binaryScaleFactor; - float EE = (float) Math.pow(2.0, (double) E); - data = new float[decodedData.length]; - if (bitmap == null) { - for (int i = 0; i < totalNPoints; i++) { - data[i] = (R + getNextLong(bb, nbytesPerSample) * EE) / DD; - } - } else { - for (int i = 0; i < totalNPoints; i++) { - if (GribNumbers.testBitIsSet(bitmap[i / 8], i % 8)) { + // Keep the native output alive until conversion finishes; a byte-buffer view avoids a heap copy. + ByteBuffer bb = outputMemory.getByteBuffer(0, outputMemory.size()).order(ByteOrder.BIG_ENDIAN); + + // decode following regulation 92.9.4, Note 4 + int D = gdrs.decimalScaleFactor; + float DD = (float) Math.pow((double) 10, (double) D); + float R = gdrs.referenceValue; + int E = gdrs.binaryScaleFactor; + float EE = (float) Math.pow(2.0, (double) E); + data = new float[totalNPoints]; + if (bitmap == null) { + for (int i = 0; i < totalNPoints; i++) { data[i] = (R + getNextLong(bb, nbytesPerSample) * EE) / DD; - } else { - data[i] = staticMissingValue; + } + } else { + for (int i = 0; i < totalNPoints; i++) { + if (GribNumbers.testBitIsSet(bitmap[i / 8], i % 8)) { + data[i] = (R + getNextLong(bb, nbytesPerSample) * EE) / DD; + } else { + data[i] = staticMissingValue; + } } } } diff --git a/grib/src/test/java/ucar/nc2/grib/grib2/TestGrib2CcsdsInput.java b/grib/src/test/java/ucar/nc2/grib/grib2/TestGrib2CcsdsInput.java new file mode 100644 index 0000000000..1cfd4e47e5 --- /dev/null +++ b/grib/src/test/java/ucar/nc2/grib/grib2/TestGrib2CcsdsInput.java @@ -0,0 +1,119 @@ +/* + * Copyright (c) 2026 University Corporation for Atmospheric Research/Unidata + * See LICENSE for license information. + */ + +package ucar.nc2.grib.grib2; + +import static com.google.common.truth.Truth.assertThat; +import static org.junit.Assert.assertThrows; + +import com.google.common.io.ByteStreams; +import java.io.EOFException; +import java.io.IOException; +import java.io.InputStream; +import java.nio.ByteBuffer; +import java.util.Arrays; +import org.junit.Test; +import ucar.unidata.io.InMemoryRandomAccessFile; + +public class TestGrib2CcsdsInput { + private static final int GRID_POINTS = 32776; + private static final int HEADER_SIZE = 25; + + @Test + public void largeCompressedFieldUsesBoundedScratchStorage() throws IOException { + byte[] encoded = encodedField(); + assertThat(encoded.length).isGreaterThan(64 * 1024); + try (TrackingFile file = file(encoded, encoded.length, Integer.MAX_VALUE, true)) { + assertThat(read(file, GRID_POINTS, encoded.length)).isEqualTo(expectedValues()); + assertThat(file.maximumBufferSize).isAtMost(64 * 1024); + assertThat(file.readCalls).isGreaterThan(1); + assertThat(file.getFilePointer()).isEqualTo(HEADER_SIZE + encoded.length); + assertThat(file.read()).isEqualTo(0x42); + } + } + + @Test + public void partialReadsPreserveEverySample() throws IOException { + byte[] encoded = encodedField(); + try (TrackingFile file = file(encoded, encoded.length, 97, true)) { + assertThat(read(file, GRID_POINTS, encoded.length)).isEqualTo(expectedValues()); + assertThat(file.getFilePointer()).isEqualTo(HEADER_SIZE + encoded.length); + assertThat(file.read()).isEqualTo(0x42); + } + } + + @Test + public void truncatedCompressedFieldStillThrowsEof() throws IOException { + byte[] encoded = encodedField(); + try (TrackingFile file = file(Arrays.copyOf(encoded, encoded.length - 1), encoded.length, 97, false)) { + assertThrows(EOFException.class, () -> read(file, GRID_POINTS, encoded.length)); + } + } + + @Test + public void constantFieldNeedsNoInputTransfer() throws IOException { + try (TrackingFile file = file(new byte[0], 0, Integer.MAX_VALUE, true)) { + assertThat(read(file, 8, 0)).isEqualTo(new float[] {-2, -2, -2, -2, -2, -2, -2, -2}); + assertThat(file.readCalls).isEqualTo(0); + assertThat(file.getFilePointer()).isEqualTo(HEADER_SIZE); + assertThat(file.read()).isEqualTo(0x42); + } + } + + private static byte[] encodedField() throws IOException { + try (InputStream input = TestGrib2CcsdsInput.class.getResourceAsStream("ccsds-input-blocks.bin")) { + return ByteStreams.toByteArray(input); + } + } + + private static float[] expectedValues() { + float[] values = new float[GRID_POINTS]; + int state = 42; + for (int i = 0; i < values.length; i++) { + // The fixture encodes these unsigned 16-bit samples with libaec 1.1.7 (flags 12, block 8, RSI 16). + state ^= state << 13; + state ^= state >>> 17; + state ^= state << 5; + values[i] = (-2 + (state & 0xffff) * 2.0f) / 10.0f; + } + return values; + } + + private static TrackingFile file(byte[] payload, int encodedLength, int maximumRead, boolean trailer) { + ByteBuffer buffer = ByteBuffer.allocate(HEADER_SIZE + payload.length + (trailer ? 1 : 0)); + buffer.putFloat(-2).putShort((short) 1).putShort((short) 1).put((byte) 16).put((byte) 0); + buffer.put((byte) 12).put((byte) 8).putShort((short) 16); + buffer.putInt(6).put((byte) 6).put((byte) 255); + buffer.putInt(5 + encodedLength).put((byte) 7).put(payload); + if (trailer) { + buffer.put((byte) 0x42); + } + return new TrackingFile(buffer.array(), maximumRead); + } + + private static float[] read(TrackingFile file, int points, int encodedLength) throws IOException { + Grib2Drs.Type42 drs = new Grib2Drs.Type42(file); + Grib2SectionBitMap bitmap = new Grib2SectionBitMap(file); + return new Grib2DataReader(42, points, points, 0, 4, HEADER_SIZE - 5, encodedLength + 5).getData(file, bitmap, drs); + } + + private static final class TrackingFile extends InMemoryRandomAccessFile { + private final int maximumRead; + private int maximumBufferSize; + private int readCalls; + + TrackingFile(byte[] content, int maximumRead) { + super("ccsds-input", content); + this.maximumRead = maximumRead; + } + + @Override + public int read(byte[] bytes, int offset, int length) throws IOException { + maximumBufferSize = Math.max(maximumBufferSize, bytes.length); + readCalls++; + return super.read(bytes, offset, Math.min(length, maximumRead)); + } + } +} diff --git a/grib/src/test/java/ucar/nc2/grib/grib2/TestGrib2DataReaderCcsds.java b/grib/src/test/java/ucar/nc2/grib/grib2/TestGrib2DataReaderCcsds.java new file mode 100644 index 0000000000..2954161d34 --- /dev/null +++ b/grib/src/test/java/ucar/nc2/grib/grib2/TestGrib2DataReaderCcsds.java @@ -0,0 +1,119 @@ +/* + * Copyright (c) 2026 University Corporation for Atmospheric Research/Unidata + * See LICENSE for license information. + */ + +package ucar.nc2.grib.grib2; + +import static com.google.common.truth.Truth.assertThat; + +import com.google.common.io.BaseEncoding; +import java.io.IOException; +import java.nio.ByteBuffer; +import java.util.Arrays; +import java.util.Collection; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +import ucar.unidata.io.InMemoryRandomAccessFile; + +@RunWith(Parameterized.class) +public class TestGrib2DataReaderCcsds { + // Unsigned, most-significant byte first, with preprocessing (GRIB2 code table 5.42). + private static final int COMPRESSION_OPTIONS = 4 | 8; + private static final int BLOCK_SIZE = 8; + private static final int REFERENCE_SAMPLE_INTERVAL = 16; + private static final int GRID_POINTS = 8; + private static final int NX = 4; + + // Small unsigned sample streams encoded with libaec, using the settings above. + @Parameterized.Parameters(name = "{0} bits per sample") + public static Collection parameters() { + return Arrays.asList(new Object[][] {{8, "C01F8084425529F0", "C01E03844AA7C000"}, + {16, "E0000FC040020020010028028014FFF8", "E0000F01C0020020050053FFE0000000"}, + {32, "F000000007E02000000100000010000000800000140000014000000A7FFFFFFC", + "F00000000780E00000010000001000000280000029FFFFFFF000000000000000"}}); + } + + private final int bits; + private final byte[] fullGrid; + private final byte[] withBitmap; + + public TestGrib2DataReaderCcsds(int bits, String fullGrid, String withBitmap) { + this.bits = bits; + this.fullGrid = BaseEncoding.base16().decode(fullGrid); + this.withBitmap = BaseEncoding.base16().decode(withBitmap); + } + + @Test + public void decodedArrayHasOneValuePerGridPoint() throws IOException { + long[] values = {0, 1, 2, 3, 10, 20, 30, (1L << bits) - 1}; + assertThat(read(values, null, 0)).isEqualTo(scaled(values)); + } + + @Test + public void bitmapRetainsMissingGridPoints() throws IOException { + long[] values = {0, 1, 2, 10, 20, (1L << bits) - 1}; + float[] scaled = scaled(values); + float[] expected = {scaled[0], Float.NaN, scaled[1], scaled[2], Float.NaN, scaled[3], scaled[4], scaled[5]}; + assertThat(read(values, new byte[] {(byte) 0b10110111}, 0)).isEqualTo(expected); + } + + @Test + public void negativeXScanReversesEachRow() throws IOException { + long[] values = {0, 1, 2, 3, 10, 20, 30, (1L << bits) - 1}; + float[] scaled = scaled(values); + float[] expected = {scaled[3], scaled[2], scaled[1], scaled[0], scaled[7], scaled[6], scaled[5], scaled[4]}; + assertThat(read(values, null, 128)).isEqualTo(expected); + } + + @Test + public void alternatingScanReversesOnlyAlternateRows() throws IOException { + long[] values = {0, 1, 2, 3, 10, 20, 30, (1L << bits) - 1}; + float[] scaled = scaled(values); + float[] expected = {scaled[0], scaled[1], scaled[2], scaled[3], scaled[7], scaled[6], scaled[5], scaled[4]}; + assertThat(read(values, null, 16)).isEqualTo(expected); + } + + @Test + public void decodedValuesRemainIndependentAfterOtherReads() throws IOException { + long[] values = {0, 1, 2, 3, 10, 20, 30, (1L << bits) - 1}; + float[] first = read(values, null, 0); + for (int i = 0; i < 16; i++) { + float[] next = read(new long[] {0, 1, 2, 10, 20, (1L << bits) - 1}, new byte[] {(byte) 0b10110111}, 0); + Arrays.fill(next, Float.NaN); + } + assertThat(first).isEqualTo(scaled(values)); + } + + private float[] read(long[] values, byte[] bitmap, int scanMode) throws IOException { + byte[] encoded = bitmap == null ? fullGrid : withBitmap; + int bitmapLength = 6 + (bitmap == null ? 0 : bitmap.length); + int dataLength = 5 + encoded.length; + ByteBuffer buffer = ByteBuffer.allocate(14 + bitmapLength + dataLength); + // Template 5.42, beginning at its reference value (octet 12). + buffer.putFloat(-2).putShort((short) 1).putShort((short) 1).put((byte) bits).put((byte) 0); + buffer.put((byte) COMPRESSION_OPTIONS).put((byte) BLOCK_SIZE).putShort((short) REFERENCE_SAMPLE_INTERVAL); + buffer.putInt(bitmapLength).put((byte) 6).put((byte) (bitmap == null ? 255 : 0)); + if (bitmap != null) { + buffer.put(bitmap); + } + long dataStart = buffer.position(); + buffer.putInt(dataLength).put((byte) 7).put(encoded); + + try (InMemoryRandomAccessFile raf = new InMemoryRandomAccessFile("ccsds", buffer.array())) { + Grib2Drs.Type42 drs = new Grib2Drs.Type42(raf); + Grib2SectionBitMap bitmapSection = new Grib2SectionBitMap(raf); + Grib2DataReader reader = new Grib2DataReader(42, GRID_POINTS, values.length, scanMode, NX, dataStart, dataLength); + return reader.getData(raf, bitmapSection, drs); + } + } + + private static float[] scaled(long[] values) { + float[] result = new float[values.length]; + for (int i = 0; i < values.length; i++) { + result[i] = (-2 + values[i] * 2.0f) / 10.0f; + } + return result; + } +} diff --git a/grib/src/test/resources/ucar/nc2/grib/grib2/ccsds-input-blocks.bin b/grib/src/test/resources/ucar/nc2/grib/grib2/ccsds-input-blocks.bin new file mode 100644 index 0000000000000000000000000000000000000000..b7c5d97ba88ea223b3eb7d478c39841020451c25 GIT binary patch literal 67574 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