Jump to content

Lempel–Ziv–Oberhumer

From Wikipedia, the free encyclopedia
(Redirected from Lzop)
LZO
DeveloperMarkus F.X.J. Oberhumer
ReleaseMay 20, 1996; 30 years ago (1996-05-20)
Stable release
2.10 / March 1, 2017; 9 years ago (2017-03-01)
Operating systemCross-platform
Typedata compression
LicenseGPLv2 or commercial
Websitewww.oberhumer.com/opensource/lzo/

Lempel–Ziv–Oberhumer (LZO) is a lossless data compression algorithm that is focused on decompression speed.[1] lzop is a free software file compression tool which implements the LZO algorithm and is licensed under the GPL. Aimed at being very fast, lzop produces files slightly larger than gzip while only requiring a tenth of the CPU use and only slightly higher memory utilization.[2] lzop is one of the fastest compressors available,[3] a close second to lz4.

Design

[edit]

The original "lzop" implementation, released in 1996, was developed by Markus Franz Xaver Johannes Oberhumer, based on earlier algorithms by Abraham Lempel and Jacob Ziv. The LZO library implements a number of algorithms with the following characteristics:

  • Higher compression speed compared to DEFLATE compression
  • Very fast decompression
  • Requires an additional buffer during compression (of size 8 kB or 64 kB, depending on compression level)
  • Requires no additional memory for decompression other than the source and destination buffers
  • Allows the user to adjust the balance between compression ratio and compression speed, without affecting the speed of decompression

LZO supports overlapping compression and in-place decompression. As a block compression algorithm, it compresses and decompresses blocks 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 to produce good results on highly redundant data and deals acceptably with non-compressible data, only expanding incompressible data by a maximum of 1/64 of the original size when measured over a block size of at least 1 kB.[4]

Implementations

[edit]

The reference implementation is written in ANSI C and has been made available as free software under the GNU General Public License. The copyright for the code is owned by Markus F. X. J. Oberhumer. It was originally published in 1996. Oberhumer has also written a command-line frontend called lzop.

Versions of LZO are available for the Perl, Python and Java languages. Various LZO implementations are reported to work under AIX, Atari TOS (Atari ST), ConvexOS, IRIX, Linux, macOS, Nintendo 64, Palm OS, PlayStation, Solaris, SunOS, VxWorks, Wii, and Win32.

FFmpeg's libavutil library includes its own implementation of LZO[5] as a possible method for lossless video compression. FFmpeg's implementation of the decompressor is also used in OpenConnect in order to support LZO-compressed ESP packets sent by Juniper Networks and Pulse Secure VPN servers.[6] LZO is available in OpenVPN but its use is strongly discouraged after it was found that compressing encrypted VPN connections may allow attackers to gain privileged information by observing message lengths[7].

The Linux kernel uses its LZO implementation in some of its features:

References

[edit]
  1. ↑ Arnaud Bouche (2008-01-01). "LZO fast compress/uncompress: implementation in 80386 machine code for Delphi". bouchez.info. LZO. Retrieved 2022-08-23. Do you know the LZO compression format?
  2. ↑ "Quick Benchmark: Gzip vs Bzip2 vs LZMA vs XZ vs LZ4 vs LZO - CatchChallenger wiki". catchchallenger.first-world.info. Retrieved 2016-07-05.
  3. ↑ "ACT - Summary of Winners". Archived from the original on 2010-05-03. Retrieved 2010-07-25.
  4. ↑ Tarreau, Willy (2014-07-19). "LZO stream format as understood by Linux's LZO decompressor". infradead.org. Infra Dead. Retrieved 2022-08-23. This document describes what input format the LZO decompressor as implemented in the Linux kernel understands.
  5. ↑ Reimar Döffinger. "libavutil/lzo.c". FFmpeg.
  6. ↑ David Woodhouse (January 26, 2015). "Add LZO decompression support". OpenConnect.
  7. ↑ "Security Advisory: The VORACLE attack vulnerability". OpenVPN. 2018-09-29. Retrieved 2026-10-05.
[edit]