6

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

4

11 回答 11

6

一种非常快速的压缩算法是LZO。该网站上的基准测试表明,减压的速度与memcpy().

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

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

于 2009-08-31T23:49:47.873 回答
5

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

7-Zip

于 2009-08-31T23:53:35.463 回答
3

由于您需要一些快速但不一定是最好的压缩的东西,您可能会考虑使用 RLE(运行长度编码)压缩的库。一种实现是librle,它在 BSD 许可下,完全允许用于专有用途。

于 2009-08-31T23:50:31.133 回答
3

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

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

于 2009-09-01T03:38:33.097 回答
3

这里有几个:

FastLZ -- 快速且轻量级的 MIT 许可证,除非您想在 GPL 许可证下使用它

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

于 2009-11-15T05:16:43.277 回答
3

Google 发布了“Snappy”,这是一个 BSD 许可的压缩库,用 C++ 编写(包括 C 中的绑定)。

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

根据源中的自述文件:

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

于 2011-09-22T08:42:15.083 回答
3

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

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

于 2012-06-12T08:06:33.847 回答
3

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

于 2013-05-14T05:09:54.807 回答
2

英特尔集成性能基元具有实现各种压缩的示例:

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

IPP 不是免费的,但速度非常快。它支持 Windows 和 Linux。

于 2009-09-01T04:38:04.490 回答
2

我使用了Haruhiko Okumura的LZSS 实现。他的网站上的许可并不清楚,但有些版本发布时包含“自由使用、分发和修改此程序”行,并且代码由商业供应商免费使用。

另一种选择可能是实现 LZF的lzfx库。它是根据 BSD 许可证发布的。

于 2010-09-22T11:42:09.990 回答
1

是的,bzip2 有 BSD 许可证。

于 2009-08-31T23:50:42.430 回答