package
0.0.0-20240905174813-5b86810c7bc7
Repository: https://github.com/geange/lucene-go.git
Documentation: pkg.go.dev

# Packages

No description provided by the author
No description provided by the author

# README

packed

Packed integer arrays and streams.

The packed package provides

  • sequential and random access capable arrays of positive longs,
  • routines for efficient serialization and deserialization of streams of packed integers.

The implementations provide different trade-offs between memory usage and access speed. The standard usage scenario is replacing large int or long arrays in order to reduce the memory footprint.

In-memory structures

Mutable

  • Only supports positive longs.
  • Requires the number of bits per value to be known in advance.
  • Random-access for both writing and reading.

GrowableWriter

  • Same as PackedInts.Mutable but grows the number of bits per values when needed.
  • Useful to build a PackedInts.Mutable from a read-once stream of longs.

PagedGrowableWriter

  • Slices data into fixed-size blocks stored in GrowableWriters.
  • Supports more than 2B values.
  • You should use PackedLongValues instead if you don't need random write access.

PackedLongValues.deltaPackedBuilder

  • Can store any sequence of longs.
  • Compression is good when values are close to each other.
  • Supports random reads, but only sequential writes.
  • Can address up to 2^42 values.

PackedLongValues.packedBuilder

  • Same as deltaPackedBuilder but assumes values are 0-based.

PackedLongValues.monotonicBuilder

  • Same as deltaPackedBuilder except that compression is good when the stream is a succession of affine functions.

Disk-based structures

Writer/Reader/ReaderIterator

  • Only supports positive longs.
  • Requires the number of bits per value to be known in advance.
  • Splits the stream into fixed-size blocks.
  • Supports both fast sequential access with low memory footprint with ReaderIterator and random-access by either loading values in memory or leaving them on disk with Reader.

BlockPackedWriter/BlockPackedReader/BlockPackedReaderIterator

  • Splits the stream into fixed-size blocks.
  • Compression is good when values are close to each other.
  • Can address up to 2B - blockSize values.

MonotonicBlockPackedWriter/MonotonicBlockPackedReader

  • Same as the non-monotonic variants except that compression is good when the stream is a succession of affine functions.
  • The reason why there is no sequential access is that if you need sequential access, you should rather delta-encode and use BlockPackedWriter.

PackedDataOutput/PackedDataInput

  • Writes sequences of longs where each long can use any number of bits.