Class PForUtil
- java.lang.Object
-
- org.apache.lucene.codecs.lucene90.PForUtil
-
final class PForUtil extends java.lang.ObjectUtility class to encode sequences of 128 small positive integers.
-
-
Field Summary
Fields Modifier and Type Field Description private byte[]exceptionBuffprivate ForUtilforUtilprivate static intHALF_BLOCK_SIZEprivate static long[]IDENTITY_PLUS_ONEprivate static intMAX_EXCEPTIONS
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description (package private) static booleanallEqual(long[] l)private voidapplyExceptions32(int bitsPerValue, int numExceptions, DataInput in, long[] longs)Apply the exceptions where the values are packed two-per-long inlongs.(package private) voiddecode(DataInput in, long[] longs)Decode 128 integers intoints.(package private) voiddecodeAndPrefixSum(DataInput in, long base, long[] longs)Decode deltas, compute the prefix sum and addbaseto all decoded longs.(package private) voidencode(long[] longs, DataOutput out)Encode 128 integers fromlongsintoout.private static voidexpand32(long[] longs)Expand the values packed two-per-long inlongsinto 128 individual long values stored back intolongs.private static voidfillSameValue32(long[] longs, long val)Fills thelongswith the providedval, packed two values per long (using 32 bits per value).private static voidinnerPrefixSum32(long[] longs)Unrolled "inner" prefix sum logic where the values are packed two-per-long inlongs.private static voidprefixSum32(long[] longs, long base)Apply prefix sum logic where the values are packed two-per-long inlongs.private static voidprefixSumOf(long[] longs, long base, long val)Filllongswith the final values for the case of all deltas beingval.private static voidprefixSumOfOnes(long[] longs, long base)Filllongswith the final values for the case of all deltas being 1.(package private) voidskip(DataInput in)Skip 128 integers.
-
-
-
Field Detail
-
MAX_EXCEPTIONS
private static final int MAX_EXCEPTIONS
- See Also:
- Constant Field Values
-
HALF_BLOCK_SIZE
private static final int HALF_BLOCK_SIZE
- See Also:
- Constant Field Values
-
IDENTITY_PLUS_ONE
private static final long[] IDENTITY_PLUS_ONE
-
forUtil
private final ForUtil forUtil
-
exceptionBuff
private final byte[] exceptionBuff
-
-
Constructor Detail
-
PForUtil
PForUtil(ForUtil forUtil)
-
-
Method Detail
-
allEqual
static boolean allEqual(long[] l)
-
encode
void encode(long[] longs, DataOutput out) throws java.io.IOExceptionEncode 128 integers fromlongsintoout.- Throws:
java.io.IOException
-
decode
void decode(DataInput in, long[] longs) throws java.io.IOException
Decode 128 integers intoints.- Throws:
java.io.IOException
-
decodeAndPrefixSum
void decodeAndPrefixSum(DataInput in, long base, long[] longs) throws java.io.IOException
Decode deltas, compute the prefix sum and addbaseto all decoded longs.- Throws:
java.io.IOException
-
skip
void skip(DataInput in) throws java.io.IOException
Skip 128 integers.- Throws:
java.io.IOException
-
prefixSumOfOnes
private static void prefixSumOfOnes(long[] longs, long base)Filllongswith the final values for the case of all deltas being 1. Note this assumes there are no exceptions to apply.
-
prefixSumOf
private static void prefixSumOf(long[] longs, long base, long val)Filllongswith the final values for the case of all deltas beingval. Note this assumes there are no exceptions to apply.
-
fillSameValue32
private static void fillSameValue32(long[] longs, long val)Fills thelongswith the providedval, packed two values per long (using 32 bits per value).
-
applyExceptions32
private void applyExceptions32(int bitsPerValue, int numExceptions, DataInput in, long[] longs) throws java.io.IOExceptionApply the exceptions where the values are packed two-per-long inlongs.- Throws:
java.io.IOException
-
prefixSum32
private static void prefixSum32(long[] longs, long base)Apply prefix sum logic where the values are packed two-per-long inlongs.
-
expand32
private static void expand32(long[] longs)
Expand the values packed two-per-long inlongsinto 128 individual long values stored back intolongs.
-
innerPrefixSum32
private static void innerPrefixSum32(long[] longs)
Unrolled "inner" prefix sum logic where the values are packed two-per-long inlongs. After this method, the final values will be correct for all high-order bits (values [0..63]) but a final prefix loop will still need to run to "correct" the values of [64..127] in the low-order bits, which need the 64th value added to all of them.
-
-