免费的非gpl数据压缩库

时间:2009-08-31 23:44:33

标签: c++ compression zlib

我正在编写存储数据的项目,所以我需要压缩它。我试过zlib,但它是我项目的瓶颈。所以也许有更快的解决方案。我不需要很高的压缩率,但我正在寻找真正快速的压缩。是否有除zlib之外的任何其他数据压缩库,它们是真正免费的并且可以在专有软件中使用(项目,我正在研究,不是基于GPL)。我的项目是在C ++上,我需要压缩char *文本数组。

11 个答案:

答案 0 :(得分:6)

非常快速的压缩算法是LZO。网站上的基准测试显示,减压速度与memcpy()的速度相当。

LZO的免费版本是GPL许可的,但LZO Professional中还有该库的商业版本。另外,从文档:

  

联系作者可以获得不愿意接受GNU通用公共许可证的商业和其他应用程序的特殊许可。

答案 1 :(得分:5)

我认为7zip是公共领域。 LZMA压缩。

7-Zip

答案 2 :(得分:3)

由于您需要快速但不一定是最佳压缩的东西,您可能会考虑执行RLE(run-length encoding)压缩的库。一个实现是librle,它是BSD许可证,非常允许专有使用。

答案 3 :(得分:3)

另一个答案已经提到LZO,这是默认的“我需要更快(解压缩)”解决方案。

我发现的另一个是liblzf。在速度和压缩率方面非常接近LZOLZO拥有GPL许可,而liblzf拥有BSD许可(恕我直言,这是一个优势)。

答案 4 :(得分:3)

以下是一些:

FastLZ - 快速轻便的麻省理工学院许可,除非您想在GPL许可下使用

LZJB - 也快速且非常轻量级,用作Sun ZFS的默认压缩算法

答案 5 :(得分:3)

谷歌发布了“Snappy”,这是一个用C ++编写的BSD许可压缩库(包含C语言的绑定)。

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

根据来源的README:

  

在我们的测试中,Snappy通常比同样的算法更快   实现时(例如LZO,LZF,FastLZ,QuickLZ等)   相当的压缩比。

答案 6 :(得分:3)

由于LZO许可问题,我们决定评估此线程中获得BSD / MIT许可的建议,与LZO非常相似(为了更容易集成),并且适合在低端硬件上运行(想想便宜的32位MCU,不是奔腾2)。

我们测试了LZ4,LZF,FastLZ并将结果与​​LZO进行了比较。我们压缩了图形数据。我无法发布确切的结果,但是 LZ4比其他人快得多(在7次测试中胜出,第二好的比例高达40%),同时匹配大小(5-2-2获胜) LZF-LZ4-LZO,利润率很小)。

答案 7 :(得分:3)

我是第二个lz4。它有BSD许可证。

答案 8 :(得分:2)

Intel Integrated Performance Primitives有样本可以实现各种压缩:

  
      
  • bzip2兼容库     ipp_bzip2示例演示了如何使用英特尔IPP数据压缩域函数来实现bzip2 / libbzip2(用于无损,块排序数据压缩的程序和库以及针对bzip的线程优化的新改进
  •   
  • GZIP兼容库     IPP_GZIP示例说明了使用英特尔IPP数据压缩域API实现有效无损数据压缩解决方案的方法。此外,此示例还显示了使用OpenMP和其他方法并行化应用程序的方法,以及多核环境的高级优势。
  •   
  • zlib兼容库(新!)     此代码示例说明了如何使用英特尔IPP中优化的LZ77和霍夫曼编码功能构建兼容zlib的数据压缩库。
  •   
  • 一般数据压缩示例     说明如何使用Intel IPP数据压缩域提供的功能。包括霍夫曼编码/解码,RLE编码/解码,MoveToFront(MTF),Burrows-Wheeler变换(BWT),通用区间变换(GIT)和Lempel-Ziv-Storer-Szymanski(LZSS)功能。
  •   

IPP不是免费的,但它真的很快。它支持Windows和Linux。

答案 9 :(得分:2)

我使用了来自LZSSimplementation Haruhiko Okumura。他的网站上的许可证并不明确,但some versions已发布,其中包含“自由使用,分发和修改此程序”这一行,代码由商业供应商自由使用。

另一个选项可能是实现LZF的lzfx lib。它是根据BSD许可证发布的。

答案 10 :(得分:1)

是的,bzip2拥有BSD许可证。