бесплатные библиотеки сжатия данных не-gpl - PullRequest
6 голосов
/ 01 сентября 2009

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

Ответы [ 11 ]

6 голосов
/ 01 сентября 2009

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

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

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

5 голосов
/ 01 сентября 2009

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

7-Zip

3 голосов
/ 14 мая 2013

I секунда lz4 . Имеет лицензию BSD.

3 голосов
/ 12 июня 2012

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

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

3 голосов
/ 22 сентября 2011

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

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

По данным README в источнике:

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

3 голосов
/ 15 ноября 2009

Вот некоторые из них:

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

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

3 голосов
/ 01 сентября 2009

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

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

3 голосов
/ 01 сентября 2009

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

2 голосов
/ 22 сентября 2010

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

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

2 голосов
/ 01 сентября 2009

Intel Integrated Performance Primitives содержит образцы, реализующие различные сжатия:

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

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

...