Class BlockPackedWriter
A writer for large sequences of longs.
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:
- <BLock>BlockCount
- BlockCount: ⌈ ValueCount / BlockSize ⌉
- Block: <Header, (Ints)>
- Header: <Token, (MinValue)>
- Token: a byte (WriteByte(Byte)), first 7 bits are the
number of bits per value (
bitsPerValue
). If the 8th bit is 1, then MinValue (see next) is0
, otherwise MinValue and needs to be decoded - MinValue: a zigzag-encoded variable-length System.Int64 (WriteVInt64(Int64)) whose value should be added to every int from the block to restore the original values
- Ints: If the number of bits per value is
0
, then there is nothing to decode and all ints are equal to MinValue. Otherwise: BlockSize packed ints (PackedInt32s) encoded on exactlybitsPerValue
bits per value. They are the subtraction of the original values and MinValue
This is a Lucene.NET INTERNAL API, use at your own risk
Inherited Members
System.Object.Equals(System.Object)
System.Object.Equals(System.Object, System.Object)
System.Object.GetHashCode()
System.Object.GetType()
System.Object.MemberwiseClone()
System.Object.ReferenceEquals(System.Object, System.Object)
System.Object.ToString()
Namespace: Lucene.Net.Util.Packed
Assembly: Lucene.Net.dll
Syntax
public sealed class BlockPackedWriter : AbstractBlockPackedWriter
Constructors
| Improve this Doc View SourceBlockPackedWriter(DataOutput, Int32)
Sole constructor.
Declaration
public BlockPackedWriter(DataOutput out, int blockSize)
Parameters
Type | Name | Description |
---|---|---|
DataOutput | out | |
System.Int32 | blockSize | the number of values of a single block, must be a power of 2 |
Methods
| Improve this Doc View SourceFlush()
Declaration
protected override void Flush()