Лемпель-Зив-Оберхумер
Разработчик(и) | Маркус FXJ Оберхумер |
---|---|
Первоначальный выпуск | 20 мая 1996 г |
Стабильная версия | 2.10
/ 1 марта 2017 г |
Операционная система | Кросс-платформенный |
Тип | сжатие данных |
Лицензия | GPLv2 или коммерческая |
Веб-сайт | www |
Лемпель-Зив-Оберхумер ( LZO ) — это без потерь сжатия данных алгоритм , ориентированный на скорость распаковки. [ 1 ]
Дизайн
[ редактировать ]Оригинальная реализация «lzop», выпущенная в 1996 году, была разработана Маркусом Францем Ксавером Йоханнесом Оберхумером на основе более ранних алгоритмов Авраама Лемпеля и Якоба Зива . Библиотека LZO реализует ряд алгоритмов со следующими характеристиками:
- Более высокая скорость сжатия по сравнению со DEFLATE. сжатием
- Очень быстрая декомпрессия
- Требуется дополнительный буфер при сжатии (размером 8 КБ или 64 КБ, в зависимости от уровня сжатия)
- Не требует дополнительной памяти для распаковки, кроме буферов источника и назначения.
- Позволяет пользователю регулировать баланс между степенью сжатия и скоростью сжатия, не влияя на скорость распаковки.
LZO поддерживает перекрывающееся сжатие и декомпрессию на месте. В качестве алгоритма сжатия блоков он сжимает и распаковывает блоки данных. Размер блока должен быть одинаковым для сжатия и распаковки. LZO сжимает блок данных в совпадения (скользящий словарь) и прогон несовпадающих литералов для получения хороших результатов при работе с сильно избыточными данными и приемлемо обрабатывает несжимаемые данные, расширяя несжимаемые данные максимум на 1/64 от исходный размер при измерении в блоке размером не менее 1 КБ. [ 2 ]
Реализации
[ редактировать ]Эталонная реализация написана на ANSI C и доступна как бесплатное программное обеспечение под лицензией GNU General Public License . Авторские права на код принадлежат Маркусу FXJ Оберхумеру. Первоначально он был опубликован в 1996 году. Оберхумер также написал интерфейс командной строки под названием lzop .
Версии LZO доступны для языков Perl , Python и Java . Сообщается, что различные реализации LZO работают под Win32 , AIX , ConvexOS, IRIX , Mac OS , Palm OS , PlayStation , Nintendo 64 , Wii , Solaris , SunOS , TOS (Atari ST), Linux и VxWorks .
Библиотека libavutil FFmpeg включает собственную реализацию LZO. [ 3 ] как возможный метод сжатия видео без потерь. Реализация декомпрессора FFmpeg также используется в OpenConnect для поддержки пакетов ESP, сжатых LZO, отправляемых серверами Juniper Networks и Pulse Secure VPN. [ 4 ]
Ядро Linux использует реализацию LZO в некоторых своих функциях:
- btrfs использует LZO в качестве возможного метода сжатия файловой системы .
- initrd и initramfs используют LZO в качестве возможного метода сжатия для первоначального сжатия RAM-накопителя .
- SquashFS использует LZO в качестве возможного метода сжатия файловой системы .
- zram использует LZO с кодированием длины серии, называемым
LZO-RLE
в качестве метода сжатия по умолчанию для сжатия RAM-диска . - zswap использует LZO в качестве метода сжатия по умолчанию для сжатия виртуальной памяти.
Ссылки
[ редактировать ]- ^ Арно Буш (1 января 2008 г.). «Быстрое сжатие/распаковка LZO: реализация в машинном коде 80386 для Delphi» . bouchez.info . ЛЗО . Проверено 23 августа 2022 г.
Знаете ли вы формат сжатия LZO?
- ^ Тарро, Вилли (19 июля 2014 г.). «Формат потока LZO, как его понимает декомпрессор LZO в Linux» . infradead.org . Инфра Мертвый . Проверено 23 августа 2022 г.
В этом документе описывается, какой входной формат понимает декомпрессор LZO, реализованный в ядре Linux.
- ^ Реймар Дёффингер. "libavutil/lzo.c" . FFmpeg .
- ^ Дэвид Вудхаус (26 января 2015 г.). «Добавить поддержку декомпрессии LZO» . ОпенКоннект .
Внешние ссылки
[ редактировать ]- Фан-страница LZO/LZOP на Wayback Machine (архивировано 25 июня 2012 г.)
- lzo-java на GitHub — реализация алгоритма сжатия liblzo2 LZO на чистом Java.