LZJB — алгоритм сжатия данных без потерь, изобретённый в 1998 году для сжатия аварийных дампов программ и данных в файловой системе ZFS. Основан на методе сжатия с использованием словаря. Этот алгоритм включает множество исправлений к алгоритму LZRW1, который в свою очередь является вариантом , являющимся членом семейства алгоритмов сжатия Lempel-Ziv. Этот алгоритм нацелен на увеличение скорости сжатия.

В 2012—2013 годах в ZFS рассматривалась замена LZJB на байт-ориентированный LZ4, как более быстрый метод с немного лучшим сжатием.

Сжатый поток в LZJB является байтовым. Для разметки потока используется управляющий байт, описывающий типы следующих 8 последовательностей. Каждый бит управляющего байта определяет тип одного элементаLZJB decoder / Wikibooks. Бит со значением 0 соответствует литеральному байту: один байт сжатого потока копируется в выходной поток. Бит со значением 1 означает ссылку в словарь («совпадение»). Два следующих за ним байта содержат 6-битное поле длины и 10-битное поле смещения (LLLLLLdd dddddddd). Биты длины декодируются в длину от 3 до 66 байтов (длина равна L+3), затем из выходного буфера выбирается строка, отстоящая на «смещение» (d) байтов назад от текущей позиции.

Примечания

Ссылки «compress» source code LZJB source code / OpenSolaris, Illumos LZJB python binding Javascript port of the LZJB algorithm lzjb в ZFS on Linux LZJB decoder / Wikibooks

Категория:Алгоритмы сжатия без потерь Категория:Алгоритмы сжатия с использованием словаря