Class FastPFOR128

java.lang.Object
me.lemire.integercompression.FastPFOR128
All Implemented Interfaces:
IntegerCODEC, SkippableIntegerCODEC

public final class FastPFOR128 extends Object implements IntegerCODEC, SkippableIntegerCODEC
This class is similar to FastPFOR but uses a small block size. Note that this does not use differential coding: if you are working on sorted lists, use IntegratedFastPFOR instead. For multi-threaded applications, each thread should use its own FastPFOR object.
  • Field Details

  • Constructor Details

    • FastPFOR128

      public FastPFOR128(int pagesize)
      Construct the FastPFOR CODEC.
      Parameters:
      pagesize - the desired page size (recommended value is FastPFOR.DEFAULT_PAGE_SIZE)
    • FastPFOR128

      public FastPFOR128()
      Construct the fastPFOR CODEC with default parameters.
  • Method Details

    • headlessCompress

      public void headlessCompress(int[] in, IntWrapper inpos, int inlength, int[] out, IntWrapper outpos)
      Compress data in blocks of BLOCK_SIZE integers (if fewer than BLOCK_SIZE integers are provided, nothing is done).
      Specified by:
      headlessCompress in interface SkippableIntegerCODEC
      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
      See Also:
    • headlessUncompress

      public void headlessUncompress(int[] in, IntWrapper inpos, int inlength, int[] out, IntWrapper outpos, int mynvalue)
      Uncompress data in blocks of integers. In this particular case, the inlength parameter is ignored: it is deduced from the compressed data.
      Specified by:
      headlessUncompress in interface SkippableIntegerCODEC
      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
      mynvalue - number of integers we want to decode, the actual number of integers decoded can be less
      See Also:
    • 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