brotli
Алгоритм сжатия данных без потерь, разработанный Google для эффективной упаковки веб-контента и других типов данных. Алгоритм обеспечивает высокую степень сжатия, превосходящую методы сжатия Gzip и Deflate, при сохранении высокой скорости декомпрессии.
Особенности
- высокая степень сжатия, особенно для текстовых данных;
- оптимизированная скорость декомпрессии;
- поддержка потокового сжатия и распаковки;
- 11 уровней сжатия для баланса между скоростью и эффективностью;
- использование статического словаря для улучшения сжатия повторяющихся данных.
Основные компоненты
Библиотека предоставляет API для работы со сжатием и распаковкой данных (подробнее с документацией можно ознакомиться здесь):
Интерфейсы сжатия данных
API для преобразования исходных данных в сжатый формат Brotli. Включает функции для однократного сжатия буфера, инкрементального (потокового) кодирования, управления состоянием кодировщика и конфигурации алгоритма (качество, размер окна, режим).
BrotliEncoderCompress()— одношаговое сжатие данных;BrotliEncoderCreateInstance()— создание экземпляра кодировщика для потокового сжатия;BrotliEncoderCompressStream()— пошаговая обработка данных при потоковом сжатии;BrotliEncoderDestroyInstance()— освобождение ресурсов кодировщика;BrotliEncoderSetParameter()— настройка параметров сжатия.
Интерфейсы распаковки данных
API для восстановления исходных данных из сжатого потока Brotli. Предоставляет функции как для однократной декомпрессии буфера, так и для последовательной обработки потока сжатых данных с контролем состояния декодера.
BrotliDecoderDecompress()— одношаговая распаковка данных;BrotliDecoderCreateInstance()— создание экземпляра декодировщика;BrotliDecoderDecompressStream()— пошаговая обработка сжатых данных;BrotliDecoderDestroyInstance()— освобождение ресурсов декодировщика;BrotliDecoderHasMoreOutput()— проверка доступности данных для чтения.
Утилиты и вспомогательные функции
Дополнительный инструментарий для работы с библиотекой: функции для оценки буфера под сжатые данные, получения метаинформации (версия, параметры) и отладочные возможности.
BrotliEncoderMaxCompressedSize()— вычисление максимального размера сжатых данных;BrotliEncoderVersion()иBrotliDecoderVersion()— получение версии библиотеки;BrotliEncoderGetParameter()— получение текущих параметров кодировщика.
Интеграция с системами отчетов
Набор предопределённых значений для управления работой алгоритма сжатия: уровни качества (от 0 до 11), определяющие соотношение скорость/степень сжатия, и размер скользящего окна (от 1KB до 16MB), влияющий на использование памяти.
BROTLI_DEFAULT_QUALITY(11) — уровень сжатия по умолчанию (максимальный).BROTLI_MIN_QUALITY(0) иBROTLI_MAX_QUALITY(11) — минимальный и максимальный допустимые уровни сжатия.BROTLI_DEFAULT_WINDOW(22) — размер окна сжатия по умолчанию (логарифм от размера в байтах).BROTLI_MIN_WINDOW_BITS(10) иBROTLI_MAX_WINDOW_BITS(24) — минимальный и максимальный допустимые размеры окна сжатия.