Package me.lemire.longcompression
Class LongBinaryPacking
java.lang.Object
me.lemire.longcompression.LongBinaryPacking
- All Implemented Interfaces:
LongCODEC,SkippableLongCODEC
Scheme based on a commonly used idea: can be extremely fast.
It encodes integers in blocks of 64 longs. For arrays containing
an arbitrary number of longs, you should use it in conjunction
with another CODEC:
LongCODEC ic = new Composition(new LongBinaryPacking(), new LongVariableByte()).Note that this does not use differential coding: if you are working on sorted lists, you must compute the deltas separately.
For details, please see BinaryPacking
- Author:
- Benoit Lacelle
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidcompress(long[] in, IntWrapper inpos, int inlength, long[] out, IntWrapper outpos) Compress data from an array to another array.voidheadlessCompress(long[] in, IntWrapper inpos, int inlength, long[] out, IntWrapper outpos) Compress data from an array to another array.voidheadlessUncompress(long[] in, IntWrapper inpos, int inlength, long[] out, IntWrapper outpos, int num) Uncompress data from an array to another array.toString()voiduncompress(long[] in, IntWrapper inpos, int inlength, long[] out, IntWrapper outpos) Uncompress data from an array to another array.
-
Constructor Details
-
LongBinaryPacking
public LongBinaryPacking()
-
-
Method Details
-
compress
Description copied from interface:LongCODECCompress data from an array to another array. Both inpos and outpos are modified to represent how much data was read and written to. If 12 longs (inlength = 12) are compressed to 3 longs, then inpos will be incremented by 12 while outpos will be incremented by 3. We use IntWrapper to pass the values by reference. -
headlessCompress
public void headlessCompress(long[] in, IntWrapper inpos, int inlength, long[] out, IntWrapper outpos) Description copied from interface:SkippableLongCODECCompress data from an array to another array. Both inpos and outpos are modified to represent how much data was read and written to. If 12 longs (inlength = 12) are compressed to 3 longs, then inpos will be incremented by 12 while outpos will be incremented by 3. We use IntWrapper to pass the values by reference.- Specified by:
headlessCompressin interfaceSkippableLongCODEC- Parameters:
in- input arrayinpos- where to start reading in the arrayinlength- how many longs to compressout- output arrayoutpos- where to write in the output array
-
uncompress
Description copied from interface:LongCODECUncompress data from an array to another array. Both inpos and outpos parameters are modified to indicate new positions after read/write.- Specified by:
uncompressin interfaceLongCODEC- Parameters:
in- array containing data in compressed forminpos- where to start reading in the arrayinlength- length of the compressed data (ignored by some schemes)out- array where to write the uncompressed outputoutpos- where to start writing the uncompressed output in out
-
headlessUncompress
public void headlessUncompress(long[] in, IntWrapper inpos, int inlength, long[] out, IntWrapper outpos, int num) Description copied from interface:SkippableLongCODECUncompress data from an array to another array. Both inpos and outpos parameters are modified to indicate new positions after read/write.- Specified by:
headlessUncompressin interfaceSkippableLongCODEC- Parameters:
in- array containing data in compressed forminpos- where to start reading in the arrayinlength- length of the compressed data (ignored by some schemes)out- array where to write the uncompressed outputoutpos- where to start writing the uncompressed output in outnum- number of longs we want to decode, the actual number of longs decoded can be less
-
toString
-