LZO

From Wikipedia, the free encyclopedia

LZO is a data compression algorithm that is focused on decompression speed. LZO is an abbreviation for Lempel-Ziv-Oberhumer. The algorithm is lossless and the reference implementation is thread safe.

A free software tool which implements it is lzop. The original library was written in ANSI C, and it has been made available under the GNU General Public License. Versions of LZO are available for the Perl, Python and Java languages. The copyright for the code is owned by Markus F. X. J. Oberhumer.

LZO-library implements a number of algorithms with the following features:

  • Decompression is simple and very fast.
  • Requires no additional memory for decompression other than the source and destination buffers.
  • Compression is pretty fast.
  • Requires 64 kB of memory for compression.
  • Allows you to dial up extra compression at a speed cost in the compressor. The speed of the decompressor is not reduced.
  • Includes compression levels for generating pre-compressed data which achieve a quite competitive compression ratio.
  • There is also a compression level which needs only 8 kB for compression.
  • Algorithm is thread safe.
  • Algorithm is lossless.

LZO supports overlapping compression and in-place decompression.

LZO is a block compression algorithm - it compresses and decompresses a block of data. Block size must be the same for compression and decompression.

LZO compresses a block of data into matches (a sliding dictionary) and runs of non-matching literals. LZO takes care about long matches and long literal runs so that it produces good results on highly redundant data and deals acceptably with non-compressible data.

When dealing with uncompressible data, LZO expands the input block by a maximum of 16 bytes per 1024 bytes input.

LZO is also reported to work under Win32, AIX, ConvexOS, IRIX, Mac OS, Palm OS, PS1 (Sony PlayStation), Solaris, SunOS, TOS (Atari ST) and VxWorks.


[edit] External links

In other languages