数据压缩
1.常见的各种压缩算法库
zstd
zstd算法(全称 Zstandard)是由FaceBook在2016年开发的一种无损压缩算法。由C语言编写,有java的实现,完全开源。zstd自带多线程压缩,充分利用多核CPU,让压缩速度提升数倍。原理是把数据 等分 成多份,并行压缩出一个单帧zstd数据,可以设置 每份的大小、重叠部分的大小。多线程压缩可以用1秒把1GiB数据压缩到500MiB,网络传输会快很多。但不支持多线程解压。不过解压速度已经很快了,低压缩等级时可以比一些SSD快。解压速度可以看zstd网站首页的表格。
zlib
是一个用于数据压缩的软件库,也是一种数据格式。 zlib 由Jean-loup Gailly和Mark Adler编写,是他们的gzip中使用的DEFLATE压缩算法的抽象文件压缩程序。
brotli
Brotli是一种新的开源数据压缩算法,比现有技术提供更好的压缩率。它是由谷歌开发的,于2015年发布。
Brotli是为现代网络设计的,其中数据压缩对减少网络带宽消耗至关重要。该算法是基于两种现有技术的巧妙结合。Lempel-Ziv编码和Huffman编码。通过同时使用这两种技术,Brotli实现了比单独使用任何一种技术都高得多的压缩率。
quicklz
QuickLZ号称是世界上速度最快的压缩库,速度可达到单核308 Mbyte/s, 使用简单,易于集成。这个 quicklz 库是RT-thread针对官方qiuicklz的C库的移植
lzo1x
LZO 非常适合进行数据的实时压缩解压处理,这就是说他更关心操作速度,而不是压缩比例。
LZO 使用 ANSI C 语言编写,并且压缩后的数据也被设计为可以跨平台使用的格式。
LZO 拥有如下的特点:
- 解压速度很快,并且很简单;
- 解压时不需要内存支持;
- 压缩的速度还不错;
- 压缩时只需要 64 KiB 的内存支持;
- 压缩比例可以根据需要调节,而这并不影响解压的效率,提高压缩比例自然会降低压缩速度;
- 压缩包含了很多的压缩级别,提供很多选择;
- 提供只需要 8 KiB 内存支持的压缩级别;
- 提供线程安全;
- 提供无损压缩;
LZO提供多重压缩,和复原解压;
lzf(2008停更)
LibLZF 是一个非常小的数据压缩库。它仅由两个 .c 和两个 .h 文件组成,很容易合并到您自己的程序中。压缩算法非常非常快,但仍然是用可移植的 C 语言编写的。
最后同样重要的是,它是免费使用的,与大多数其他 GPL 下的压缩库不同,该库使用 BSD 类型许可证,因此您可以放心地将其包含在您的程序中。
特点:
- 代码量小(不到 500 行,包括头文件和文档)。
- 非常快的压缩速度,可与直接复制循环相媲美,特别是对于基本上处于(未优化的)memcpy 速度的解压缩。通过牺牲百分之几的压缩比,压缩速度可以提高20%。
- 中等压缩率 - 通常可以预期典型二进制数据的压缩率为 40-50% 左右
- 易于使用(只有两个功能,没有附加状态)
- 高度可移植(用 C 语言编写)
- 可调,请参阅发行版中的 lzfP.h 文件,根据您的需要定制 liblzf。生成的压缩块可以通过任何 liblzf 版本解压缩,无论用于压缩的选项如何。
- 可免费使用(BSD 类型许可证)
- Perl 接口在 CPAN 上可用(压缩::LZF)
lz4(与zstd同作者)
LZ4是一种无损数据压缩算法,着重于压缩和解压缩速度。它属于面向字节的LZ77压缩方案家族。该算法提供一个比LZO算法稍差的压缩率——这逊于gzip等算法。但是,它的压缩速度类似LZO——比gzip快几倍;而解压速度显著快于LZO。
snappy
snappy是google开源的压缩算法实现,通过测试表明snappy拥有极高的性能表现,但google并没有发表相关论文,可以认为snappy是一个工业算法。snappy借鉴了LZ77的思路,LZ77的匹配过程时间复杂度过高,google对其做了许多优化。
2.各种压缩算法性能比较

这张图出自zstd自家网站。
参考文献:
zstd,未来可期的数据压缩算法 https://www.jianshu.com/p/71eb3071d3e0
Zstd 压缩算法https://blog.csdn.net/guijiaoba/article/details/118358436
zstd官网:https://facebook.github.io/zstd/
Python使用zstd压缩算法https://www.cnblogs.com/animalize/p/14290701.html
Zlib压缩算法:LZ77、LZ78、霍夫曼编码、滑动窗口、Rabin-Karp算法、哈希链、I/O缓冲区https://blog.csdn.net/Rong_Toa/article/details/108986430