public final class BlockPackedWriter extends AbstractBlockPackedWriter
The sequence is divided into fixed-size blocks and for each block, the difference between each value and the minimum value of the block is encoded using as few bits as possible. Memory usage of this class is proportional to the block size. Each block has an overhead between 1 and 10 bytes to store the minimum value and the number of bits per value of the block.
Format:
byte
, first 7 bits are the
number of bits per value (bitsPerValue). If the 8th bit is 1,
then MinValue (see next) is 0, otherwise MinValue and needs to
be decoded
variable-length long
whose value
should be added to every int from the block to restore the original
values
packed ints
encoded on exactly bitsPerValue
bits per value. They are the subtraction of the original values and
MinValue
BlockPackedReaderIterator
,
BlockPackedReader
blocks, BPV_SHIFT, finished, MAX_BLOCK_SIZE, MIN_BLOCK_SIZE, MIN_VALUE_EQUALS_0, off, ord, out, values
Constructor and Description |
---|
BlockPackedWriter(DataOutput out,
int blockSize)
Sole constructor.
|
Modifier and Type | Method and Description |
---|---|
protected void |
flush() |
add, addBlockOfZeros, finish, ord, reset, writeValues, writeVLong
public BlockPackedWriter(DataOutput out, int blockSize)
blockSize
- the number of values of a single block, must be a power of 2protected void flush() throws java.io.IOException
flush
in class AbstractBlockPackedWriter
java.io.IOException