Автор LZ4 представил новый быстрый и эффективный алгоритм сжатия ZSTD

Ян Колле (Yann Collet), автор эталонной реализации алгоритма LZ4,
представил новый алгоритм сжатия Z-standard (ZSTD), сочетающий высокую скорость кодирования и декодирования с хорошей эффективностью сжатия. Алгоритм предназначен для использования в повседневном обиходе, но он не рассчитан на достижение рекордных скоростей, свойственных LZ4, или максимальных уровней сжатия, обеспечиваемых в LZMA и ZPAQ. По сравнению с обеспечивающими рекордные показатели системами предложенный алгоритм не является однобоким (скорость за счёт степени сжатия или степень сжатия за счёт скорости) и обеспечивает отличное соотношение скорости и эффективности сжатия. Библиотека с эталонной реализацией алгоритма распространяется под лицензией BSD.

Скорость декодирования в ZSTD составляет примерно 500 Мб/сек на одном ядре процессора Intel Core i5-4300U (1.9 GHz) при скорости кодирования на уровне 200 Мб/сек, что позволяет использовать данный алгортим в сценариях по обработке данных в режиме реального времени. Кроме того, как и в LZ4, для ситуаций когда данные сжимаются один раз и многократно распаковываются в ZSTD предусмотрен режим форсированного сжатия, при котором достигается более высокий коэффициент сжатия за счёт увеличения времени упаковки.

Примечательной особенностью ZSTD также является возможность настройки потребления памяти, что позволяет использовать ZSTD на встраиваемых системах с небольшим размером ОЗУ или на серверах, одновременно обрабатывающих большое число сжатых потоков. Для декодирования необходимо заполнение таблиц трансформации, размер которых может быть настроен от 2.5 до 20 Кб, а также требуется выделение памяти под буфер с окном сжатия, который по умолчанию составляет 512 Кб, но может быть по желанию уменьшен до нескольких килобайт или увеличен до гигабайт (чем больше размер окна — тем выше уровень сжатия). В процессе сжатия данных дополнительно требуется выделение памяти под буфер сортировки, который по умолчанию составляет 128 Кб, но может быть произвольно уменьшен или увеличен.

На приведённом ниже графике отражены параметры эксперимента по сжатию файла, передаче потока по сети и его распаковке на другом конце соединения. Первый рафик показывает соотношение времени выполнения операции (ось Y) к пропускной способность канала связи в Мб/сек (ось X). Второй график отличается тем, что вместо времени используется относительное ранжирование алгоритмов, при котором за 1 принят лучший результат, а остальные показатели показаны в процентном соотношении к нему.

По графику видно, что LZ4 остаётся лидером на скоростях выше 50 Мб/сек, а ZSTD демонстрирует лучшие результаты на скоростях от 0.5 Мб/сек до 50 Мб/сек.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.