бесплатные библиотеки сжатия данных без gpl

Я пишу проект, который хранит данные, поэтому мне нужно, чтобы сжать его. Я пробовал zlib, но это узкое место моего проекта. Так может есть быстрое решение. Мне не нужен большой коэффициент сжатия, но я ищу очень быстрое сжатие. Существуют ли другие библиотеки сжатия данных, кроме zlib, которые действительно бесплатны и могут использоваться в проприетарном программном обеспечении (проект, над которым я работаю, не основан на GPL). Мой проект находится на C++ , и мне нужно сжать массивы текста char*.

11 ответов


вот несколько:

FastLZ -- быстрый и легкий, лицензия MIT, если вы не хотите использовать его под лицензией GPL

LZJB -- также быстрый и довольно легкий, используемый в качестве алгоритма сжатия по умолчанию для ZFS Sun


Я думаю, что 7zip является общественным достоянием. Сжатия LZMA.

7-Zip


очень быстрый алгоритм сжатия ЛЗО. Тесты на сайте показывают, что декомпрессия сопоставима по скорости с memcpy().

бесплатная версия LZO лицензирована GPL, но есть также коммерческая версия библиотеки в LZO Professional. Также из документации:

специальные лицензии для коммерческих и других приложений, которые не готовы принять лицензию GNU General Public, доступны по связаться с автором.


поскольку вам нужно что-то быстрое, но не обязательно лучшее сжатие, вы можете рассмотреть библиотеку, которая делает RLE (выполнить-длина кодировки) сжатия. Одна реализация -librle, который находится под лицензией BSD, что довольно допустимо для проприетарного использования.


другой ответ уже упоминает LZO, что является своего рода решением по умолчанию "мне нужно быстрее (de)сжатие".

еще один, который я нашел, это liblzf. Довольно близко к LZO с точки зрения скорости и степени сжатия. LZO имеет лицензию GPL, тогда как liblzf имеет лицензию BSD (что, IMHO, является преимуществом).


Google выпустила "Snappy", которая является лицензированной библиотекой сжатия BSD, написанной на C++ (привязки в C включены).

http://code.google.com/p/snappy/

согласно README в источнике:

в наших тестах Snappy обычно быстрее, чем алгоритмы в том же класс (например, LZO, LZF, FastLZ, QuickLZ и т. д.) при достижении сопоставимые коэффициенты сжатия.


из-за проблем с лицензированием LZO мы решили оценить предложения в этом потоке, которые лицензированы BSD/MIT, очень похожи на LZO (для более легкой интеграции) и подходят для работы на оборудовании низкого уровня (подумайте о недорогих 32-битных MCUs, а не Pentium2).

мы протестировали LZ4, LZF, FastLZ и сравнили результаты с LZO. Мы сжали графические данные. Я не могу опубликовать точные результаты, но LZ4 был значительно быстрее, чем другие (выигрыши в 7 тестах, с до 40% маржа против второго лучшего), при сопоставлении размера (5-2-2 выигрыша для LZF-LZ4-LZO, маржа была небольшой).


Я формате LZ4. Он имеет лицензию BSD.


Интегрированные Примитивы Производительности Intel имеет образцы, которые реализуют различные сжатия:

  • командой bzip2-совместимой библиотеки Пример ipp_bzip2 демонстрирует, как использовать доменные функции сжатия данных Intel IPP для реализации bzip2 / libbzip2 (программа и библиотека для сжатия данных без потерь, сортировки блоков и новых улучшений оптимизации потоков для bzip
  • gzip-сжатия-совместимой библиотеки В IPP_GZIP пример иллюстрирует способ реализации эффективного решения сжатия данных без потерь с помощью Intel IPP Data Compression domain API. Кроме того, в этом примере показаны способы распараллеливания приложений с помощью OpenMP и других методов для получения дополнительных преимуществ в многоядерной среде.
  • С zlib-библиотека (новинка!) В этом примере кода показано, как создать библиотеку сжатия данных, совместимую с zlib, с помощью оптимизированных функций кодирования LZ77 и Huffman в Intel IPP.
  • общие примеры сжатия данных Иллюстрирует использование функций, предоставляемых доменом сжатия данных Intel IPP. Включает в себя кодирование/декодирование Хаффмана, кодирование/декодирование RLE, MoveToFront (MTF), преобразования Берроуза-Уилера (BWT), преобразование общего интервала (GIT) и функции Lempel-Ziv-Storer-Szymanski (LZSS).

IPP не является бесплатным, но это очень быстро. Он поддерживает Windows и Linux.


Я использовал LZSS реализация С Харухико Окумура. Лицензирование не ясно с его сайта, но некоторые версии был выпущен с включенной строкой" использовать, распространять и изменять эту программу свободно", и код свободно используется коммерческими поставщиками.

другой вариант может быть lzfx lib, которые реализуют LZF. Он выпущен под лицензией BSD.


да, bzip2 имеет лицензию BSD.