me.lemire.integercompression
Class BinaryPacking

java.lang.Object
  extended by me.lemire.integercompression.BinaryPacking
All Implemented Interfaces:
IntegerCODEC

public final class BinaryPacking
extends Object
implements IntegerCODEC

Scheme based on a commonly used idea: can be extremely fast. It encodes integers in blocks of 128 integers. For arrays containing an arbitrary number of integers, you should use it in conjunction with another CODEC:

IntegerCODEC ic = 
  new Composition(new BinaryPacking(), new VariableByte()).
Note that this does not use differential coding: if you are working on sorted lists, use IntegratedBinaryPacking instead.

For details, please see

Daniel Lemire and Leonid Boytsov, Decoding billions of integers per second through vectorization Software: Practice & Experience http://onlinelibrary.wiley.com/doi/10.1002/spe.2203/abstract http://arxiv.org/abs/1209.2137

Daniel Lemire, Leonid Boytsov, Nathan Kurz, SIMD Compression and the Intersection of Sorted Integers http://arxiv.org/abs/1401.6399

Author:
Daniel Lemire

Constructor Summary
BinaryPacking()
           
 
Method Summary
 void compress(int[] in, IntWrapper inpos, int inlength, int[] out, IntWrapper outpos)
          Compress data from an array to another array.
 String toString()
           
 void uncompress(int[] in, IntWrapper inpos, int inlength, int[] out, IntWrapper outpos)
          Uncompress data from an array to another array.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

BinaryPacking

public BinaryPacking()
Method Detail

compress

public void compress(int[] in,
                     IntWrapper inpos,
                     int inlength,
                     int[] out,
                     IntWrapper outpos)
Description copied from interface: IntegerCODEC
Compress 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 ints (inlength = 12) are compressed to 3 ints, 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:
compress in interface IntegerCODEC
Parameters:
in - input array
inpos - location in the input array
inlength - how many integers to compress
out - output array
outpos - where to write in the output array

uncompress

public void uncompress(int[] in,
                       IntWrapper inpos,
                       int inlength,
                       int[] out,
                       IntWrapper outpos)
Description copied from interface: IntegerCODEC
Uncompress data from an array to another array. Both inpos and outpos parameters are modified to indicate new positions after read/write.

Specified by:
uncompress in interface IntegerCODEC
Parameters:
in - array containing data in compressed form
inpos - where to start reading in the array
inlength - length of the compressed data (ignored by some schemes)
out - array where to write the compressed output
outpos - where to write the compressed output in out

toString

public String toString()
Overrides:
toString in class Object


Copyright © 2014. All Rights Reserved.