Lempel – Ziv – Oberhumer ( LZO ) - это алгоритм сжатия данных без потерь , ориентированный на скорость декомпрессии. [1]
Разработчики) | Маркус FXJ Оберхумер |
---|---|
Первый выпуск | 20 мая 1996 г . |
Стабильный выпуск | 2.10 / 1 марта 2017 г . |
Операционная система | Кроссплатформенность |
Тип | Сжатие данных |
Лицензия | GPLv2 или коммерческая |
Веб-сайт | www |
Дизайн
Первоначальная реализация lzop, выпущенная в 1996 году, была разработана Маркусом Францем Ксавером Йоханнесом Оберхумером на основе более ранних алгоритмов Абрахама Лемпеля и Якоба Зива . В библиотеке LZO реализован ряд алгоритмов со следующими характеристиками: [1]
- более высокая скорость сжатия по сравнению со сжатием DEFLATE
- очень быстрая декомпрессия
- требует дополнительного буфера во время сжатия (размером 8 или 64 КБ, в зависимости от уровня сжатия)
- не требует дополнительной памяти для декомпрессии, кроме исходного и целевого буферов
- позволяет пользователю регулировать баланс между степенью сжатия и скоростью сжатия, не влияя на скорость декомпрессии
LZO поддерживает перекрывающееся сжатие и декомпрессию на месте. Как алгоритм сжатия блоков, он сжимает и распаковывает блоки данных. Размер блока должен быть одинаковым для сжатия и распаковки. LZO сжимает блок данных в совпадения (скользящий словарь) и прогоны несовпадающих литералов для получения хороших результатов на сильно избыточных данных и приемлемо работает с несжимаемыми данными, только расширяя несжимаемые данные максимум на 1/64 от исходный размер при измерении размера блока не менее 1 КБ.
Реализации
Эталонная реализация написана на ANSI C и сделана доступной как бесплатное программное обеспечение под Стандартной общественной лицензией GNU . Авторские права на код принадлежит Markus FXJ Oberhumer. Первоначально он был опубликован в 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 .
Ядро Linux использует реализацию LZO в некоторых функциях:
- btrfs использует LZO как возможный метод сжатия файловой системы .
- initrd и initramfs используют LZO как возможный метод сжатия для начального сжатия RAM-диска .
- SquashFS использует LZO как возможный метод сжатия файловой системы .
- zram использует LZO с кодировкой длин серий, называемую
LZO-RLE
методом сжатия по умолчанию для сжатия RAM-диска . - zswap использует LZO в качестве метода сжатия по умолчанию для сжатия виртуальной памяти.
Рекомендации
Внешние ссылки
- oberhumer.com: библиотека сжатия данных в реальном времени LZO
- LZO / LZOP Fanpage на Wayback Machine (архивировано 25 июня 2012 г.)
- Арно Буш (2008). «Быстрое сжатие / распаковка LZO: реализация в машинном коде 80386 для Delphi» .
- lzo-java на GitHub - Чистая Java-реализация алгоритма сжатия liblzo2 LZO
- Формат потока LZO в понимании декомпрессора LZO Linux