- java.lang.Object
-
- org.apache.lucene.util.packed.BulkOperation
-
- All Implemented Interfaces:
PackedInts.Decoder
,PackedInts.Encoder
- Direct Known Subclasses:
BulkOperationPacked
,BulkOperationPackedSingleBlock
abstract class BulkOperation extends java.lang.Object implements PackedInts.Decoder, PackedInts.Encoder
Efficient sequential read/write of packed integers.
-
-
Field Summary
Fields Modifier and Type Field Description private static BulkOperation[]
packedBulkOps
private static BulkOperation[]
packedSingleBlockBulkOps
-
Constructor Summary
Constructors Constructor Description BulkOperation()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description int
computeIterations(int valueCount, int ramBudget)
For every number of bits per value, there is a minimum number of blocks (b) / values (v) you need to write in order to reach the next block boundary:static BulkOperation
of(PackedInts.Format format, int bitsPerValue)
protected int
writeLong(long block, byte[] blocks, int blocksOffset)
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.lucene.util.packed.PackedInts.Decoder
byteBlockCount, byteValueCount, decode, decode, decode, decode, longBlockCount, longValueCount
-
Methods inherited from interface org.apache.lucene.util.packed.PackedInts.Encoder
byteBlockCount, byteValueCount, encode, encode, encode, encode, longBlockCount, longValueCount
-
-
-
-
Field Detail
-
packedBulkOps
private static final BulkOperation[] packedBulkOps
-
packedSingleBlockBulkOps
private static final BulkOperation[] packedSingleBlockBulkOps
-
-
Method Detail
-
of
public static BulkOperation of(PackedInts.Format format, int bitsPerValue)
-
writeLong
protected int writeLong(long block, byte[] blocks, int blocksOffset)
-
computeIterations
public final int computeIterations(int valueCount, int ramBudget)
For every number of bits per value, there is a minimum number of blocks (b) / values (v) you need to write in order to reach the next block boundary:- 16 bits per value -> b=2, v=1 - 24 bits per value -> b=3, v=1 - 50 bits per value -> b=25, v=4 - 63 bits per value -> b=63, v=8 - ...
A bulk read consists in copyingiterations*v
values that are contained initerations*b
blocks into along[]
(higher values ofiterations
are likely to yield a better throughput): this requires n * (b + 8v) bytes of memory.This method computes
iterations
asramBudget / (b + 8v)
(since a long is 8 bytes).
-
-