lz4

Экстремально быстрая библиотека сжатия данных без потерь, которая обеспечивает высокую производительность как при сжатии, так и при распаковке данных. Алгоритм LZ4 оптимизирован для скорости и достигает скорости распаковки до 5 ГБ/с на современных процессорах, что делает его идеальным решением для приложений, требующих минимальной задержки и высокой пропускной способности.

Особенности

  • экстремально высокая скорость сжатия и распаковки;
  • настраиваемые уровни сжатия для баланса между скоростью и степенью сжатия;
  • поддержка потокового (streaming) и кадрового (frame) форматов;
  • низкие требования к памяти (рабочий буфер от 64 КБ).

Основные компоненты

LZ4 предоставляет несколько интерфейсов для различных сценариев использования: от простых функций для сжатия блоков до продвинутых API для потоковой обработки (подробнее с документацией можно ознакомиться здесь).

Базовые функции сжатия блоков

Библиотека предоставляет простые функции для сжатия и распаковки блоков данных фиксированного размера. Этот интерфейс идеально подходит для сжатия данных, которые помещаются в память целиком.

Основные функции блокового сжатия:

  • LZ4_compress_default() — сжатие блока данных с настройками по умолчанию;
  • LZ4_decompress_safe() — безопасная распаковка (с проверкой границ буфера);
  • LZ4_compressBound() — вычисление максимального размера сжатого блока;
  • LZ4_compress_fast() — быстрое сжатие с настраиваемым ускорением (acceleration);
  • LZ4_compress_HC() — высококомпрессионное сжатие (High Compression mode).

Потоковое сжатие

Для обработки данных, которые не помещаются в память целиком, LZ4 предоставляет потоковый интерфейс, позволяющий сжимать данные по частям. Это особенно полезно для сетевых протоколов, файловых потоков и обработки больших объемов данных.

Функции потокового сжатия:

  • LZ4_createStream() — создание контекста для потокового сжатия;
  • LZ4_resetStream() — сброс контекста для повторного использования;
  • LZ4_compress_fast_continue() — продолжение сжатия в потоковом режиме;
  • LZ4_saveDict() — сохранение словаря для улучшения сжатия последующих данных;
  • LZ4_createStreamDecode() и LZ4_decompress_safe_continue() — потоковая распаковка.

Кадровый формат

LZ4 Frame format — это стандартизированный формат для хранения сжатых данных, который включает заголовки, контрольные суммы и другие метаданные. Этот формат обеспечивает совместимость между различными реализациями LZ4 и инструментами.

Особенности кадрового формата:

  • Поддержка контрольных сумм содержимого (content checksum) для проверки целостности;
  • Заголовки с информацией о размере и параметрах сжатия;
  • Совместимость с утилитой командной строки lz4;
  • Стандартизированный формат для обмена данными.

Высококомпрессионный режим

LZ4_HC (High Compression) — это вариант алгоритма LZ4, который обеспечивает лучшую степень сжатия за счет более тщательного поиска совпадений. Этот режим медленнее стандартного, но всё равно значительно быстрее многих других алгоритмов сжатия.

Функции HC-режима:

  • LZ4_compress_HC() — сжатие в HC-режиме;
  • LZ4_compress_HC_extStateHC() — использование внешнего буфера для состояния;
  • Настраиваемый уровень сжатия (от 1 до 12, где 12 — максимальное сжатие);
  • Совместимость с форматами распаковки стандартного LZ4.

Низкоуровневые API и настройка производительности

Для опытных пользователей LZ4 предоставляет низкоуровневые функции, позволяющие точно контролировать процесс сжатия и оптимизировать производительность под конкретные рабочие нагрузки.

Низкоуровневые функции:

  • LZ4_compress_fast_extState() — сжатие с использованием внешнего буфера состояния;
  • LZ4_compress_destSize() — сжатие до заданного размера буфера;
  • Настройка ускорения (acceleration) для баланса между скоростью и степенью сжатия;
  • Прямой доступ к внутренним функциям хеширования и поиска.

Использование в проекте

Документация по использованию Conan-пакетов для разработки приложений для ОС Аврора.

На сервере Conan библиотеки заранее собраны и размещены под различные версии ОС Аврора 4 и ОC Аврора 5. Для данных версий представлены архитектуры armv7hl, aarch64 и x84_64.

Библиотеку можно использовать в проекте с помощью данного conanfile.py

from conan import ConanFile

class Application(ConanFile):
    settings = "os", "compiler", "arch", "build_type"
    generators = "PkgConfigDeps"

    requires = (
        "lz4/1.9.4@aurora",
    )    

Процесс локальной сборки описан в документации.

lz4

Extremely Fast Compression algorithm
Версия
Домашняя страница
Скачать
armv7
87.62 Kb
MD5: 4c50241cead45c2d352adb371b7f3307
Updated: 22.02.2026, 21:37:03
armv8
99.39 Kb
MD5: 7cd63ad745aab14a6bec7625c9120bd3
Updated: 22.02.2026, 21:36:33
x86_64
97.03 Kb
MD5: 220bc38638673f612f50253c35239b9d
Updated: 22.02.2026, 21:37:08
Использование в проекте

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.