Lempel–Ziv–Oberhumer
   HOME

TheInfoList



OR:

Lempel–Ziv–Oberhumer (LZO) is a
lossless Lossless compression is a class of data compression that allows the original data to be perfectly reconstructed from the compressed data with no loss of information. Lossless compression is possible because most real-world data exhibits statistic ...
data compression In information theory, data compression, source coding, or bit-rate reduction is the process of encoding information using fewer bits than the original representation. Any particular compression is either lossy or lossless. Lossless compressio ...
algorithm In mathematics and computer science, an algorithm () is a finite sequence of rigorous instructions, typically used to solve a class of specific problems or to perform a computation. Algorithms are used as specifications for performing ...
that is focused on decompression speed.


Design

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.


Implementations

The reference implementation is written in
ANSI C ANSI C, ISO C, and Standard C are successive standards for the C programming language published by the American National Standards Institute (ANSI) and ISO/IEC JTC 1/SC 22/WG 14 of the International Organization for Standardization (ISO) and th ...
, and it has been made available as
free software Free software or libre software is computer software distributed under terms that allow users to run the software for any purpose as well as to study, change, and distribute it and any adapted versions. Free software is a matter of liberty, no ...
under the
GNU General Public License The GNU General Public License (GNU GPL or simply GPL) is a series of widely used free software licenses that guarantee end users the four freedoms to run, study, share, and modify the software. The license was the first copyleft for general ...
. The
copyright A copyright is a type of intellectual property that gives its owner the exclusive right to copy, distribute, adapt, display, and perform a creative work, usually for a limited time. The creative work may be in a literary, artistic, educatio ...
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 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 slight ...
. Versions of LZO are available for the
Perl Perl is a family of two high-level, general-purpose, interpreted, dynamic programming languages. "Perl" refers to Perl 5, but from 2000 to 2019 it also referred to its redesigned "sister language", Perl 6, before the latter's name was offic ...
,
Python Python may refer to: Snakes * Pythonidae, a family of nonvenomous snakes found in Africa, Asia, and Australia ** ''Python'' (genus), a genus of Pythonidae found in Africa and Asia * Python (mythology), a mythical serpent Computing * Python (pro ...
and
Java Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's mos ...
languages. Various LZO implementations are reported to work under
Win32 The Windows API, informally WinAPI, is Microsoft's core set of application programming interfaces (APIs) available in the Microsoft Windows operating systems. The name Windows API collectively refers to several different platform implementations th ...
, AIX, ConvexOS, IRIX,
Mac OS Two major famlies of Mac operating systems were developed by Apple Inc. In 1984, Apple debuted the operating system that is now known as the "Classic" Mac OS with its release of the original Macintosh System Software. The system, rebranded "M ...
,
Palm OS Palm OS (also known as Garnet OS) was a mobile operating system initially developed by Palm, Inc., for personal digital assistants (PDAs) in 1996. Palm OS was designed for ease of use with a touchscreen-based graphical user interface. It is pro ...
, PlayStation,
Nintendo 64 The (N64) is a home video game console developed by Nintendo. The successor to the Super Nintendo Entertainment System, it was released on June 23, 1996, in Japan, on September 29, 1996, in North America, and on March 1, 1997, in Europe and ...
, Wii, Solaris, SunOS, TOS (Atari ST),
Linux Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, w ...
and
VxWorks VxWorks is a real-time operating system (or RTOS) developed as proprietary software by Wind River Systems, a wholly-owned subsidiary of Aptiv. First released in 1987, VxWorks is designed for use in embedded systems requiring real-time, determi ...
. FFmpeg's libavutil library includes its own implementation of LZO as a possible method for lossless video compression. FFmpeg's implementation of the decompressor is also used in
OpenConnect OpenConnect is an open-source software application for connecting to virtual private networks (VPN), which implement secure point-to-point connections. It was originally written as an open-source replacement for Cisco's proprietary AnyConnect ...
in order to support LZO-compressed
ESP ESP most commonly refers to: * Extrasensory perception, a paranormal ability ESP may also refer to: Arts, entertainment Music * ESP Guitars, a manufacturer of electric guitars * E.S. Posthumus, an independent music group formed in 2000, ...
packets sent by
Juniper Networks Juniper Networks, Inc. is an American multinational corporation headquartered in Sunnyvale, California. The company develops and markets networking products, including routers, switches, network management software, network security product ...
and
Pulse Secure Ivanti () is an IT software company headquartered in South Jordan, Utah, United States. It produces software for IT Security, IT Service Management, IT Asset Management, Unified Endpoint Management, Identity Management and Supply Chain Managemen ...
VPN servers. The Linux kernel uses its LZO implementation in some of its features: *
btrfs Btrfs (pronounced as "better F S", "butter F S", "b-tree F S", or simply by spelling it out) is a computer storage format that combines a file system based on the copy-on-write (COW) principle with a logical volume manager (not to be confused ...
uses LZO as a possible compression method for file system compression. * initrd and initramfs use LZO as a possible compression method for initial
RAM drive Ram, ram, or RAM may refer to: Animals * A male sheep * Ram cichlid, a freshwater tropical fish People * Ram (given name) * Ram (surname) * Ram (director) (Ramsubramaniam), an Indian Tamil film director * RAM (musician) (born 1974), Dutch * ...
compression. *
SquashFS Squashfs is a compressed read-only file system for Linux. Squashfs compresses files, inodes and directories, and supports block sizes from 4 KiB up to 1 MiB for greater compression. Several compression algorithms are supported. Squashfs is ...
uses LZO as a possible compression method for file system compression. *
zram zram, formerly called compcache, is a Linux kernel module for creating a compressed block device in RAM, i.e. a RAM disk with on-the-fly disk compression. The block device created with zram can then be used for swap or as general-purpose RAM ...
uses LZO with run-length encoding called LZO-RLE as the default compression method for
RAM drive Ram, ram, or RAM may refer to: Animals * A male sheep * Ram cichlid, a freshwater tropical fish People * Ram (given name) * Ram (surname) * Ram (director) (Ramsubramaniam), an Indian Tamil film director * RAM (musician) (born 1974), Dutch * ...
compression. *
zswap zswap is a Linux kernel feature that provides a compressed write-back Cache (computing), cache for Paging, swapped pages, as a form of virtual memory compression. Instead of moving memory pages to a swap device when they are to be swapped ou ...
uses LZO as the default compression method for
virtual memory compression Virtual memory compression (also referred to as RAM compression and memory compression) is a memory management technique that utilizes data compression to reduce the size or number of paging requests to and from the auxiliary storage. In a virtua ...


References


External links

* * - Pure Java implementation of the liblzo2 LZO compression algorithm {{DEFAULTSORT:Lempel-Ziv-Oberhumer Lossless compression algorithms Free data compression software C (programming language) libraries