字节数据 数据压缩
时间:2020-09-29 11:11:11
参考:
数据压缩#
数据压缩是为了减少数据占用的空间,是指把原始数据转换成占用空间更小的压缩数据的过程。
比如说原始数据 AAAAA
, 使用一种压缩算法,压缩后的数据是 A5
,压缩前是五个字节,压缩后是两个字节。压缩率 (5-2)/5=60%
。
压缩:把原始数据通过压缩算压缩成压缩数据。
解压:把压缩数据通过解压缩算法解压成原始数据。
压缩算法的核心指标:压缩速度,解压速度,压缩率。
常见压缩算法#
数据压缩算法特点:
- 有损压缩:解压缩可以一点不差的还原原始数据。多用于图片、音频和视频压缩。
- 无损压缩:解压缩还原的数据有部分数据和原始数据不一致。多用于文本压缩。
数据压缩#
LZ77#
LZ77是一种无损压缩算法,基于字典。
Snappy#
基于LZ77,注重压缩速度,压缩率可能不高。
DEFLATE#
DEFLATE是同时使用了LZ77算法与哈夫曼编码(Huffman Coding)的一个无损数据压缩算法。
bzip#
注重压缩效率。
gzip#
gzip是一种无损压缩算法,基于DEFLATE算法。压缩效率比bzip低,压缩速度比bizp高。
LZO#
LZO是致力于解压速度的一种无损数据压缩算法,LZO是Lempel-Ziv-Oberhumer的缩写。
Lz4#
LZ4是一种无损数据压缩算法,着重于压缩和解压缩速度,面向字节。压缩率比LZO稍差,压缩速度类似LZO,解压速度显著快于LZO。
HTTP 压缩#
HTTP 内置到网页服务器和网页客户端中以减少传输数据的大小。常用压缩方式 gzip和Deflate。
JPEG#
针对照片影像而广泛使用的有损压缩标准方法。
MP3#
数字音频编码和有损压缩格式。它被设计来大幅降低音频数据量,通过舍弃PCM音频资料中对人类听觉不重要的部分,达成压缩成较小文件的目的。
数据压缩效率#
Compressor | Ratio | Compression | Decompression |
---|---|---|---|
memcpy | 1.000 | 7300 MB/s | 7300 MB/s |
LZ4 fast 8 (v1.7.3) | 1.799 | 911 MB/s | 3360 MB/s |
LZ4 default (v1.7.3) | 2.101 | 625 MB/s | 3220 MB/s |
LZO 2.09 | 2.108 | 620 MB/s | 845 MB/s |
QuickLZ 1.5.0 | 2.238 | 510 MB/s | 600 MB/s |
Snappy 1.1.3 | 2.091 | 450 MB/s | 1550 MB/s |
LZF v3.6 | 2.073 | 365 MB/s | 820 MB/s |
Zstandard 1.1.1 -1 | 2.876 | 330 MB/s | 930 MB/s |
Zstandard 1.1.1 -3 | 3.164 | 200 MB/s | 810 MB/s |
zlib deflate 1.2.8 -1 | 2.730 | 100 MB/s | 370 MB/s |
LZ4 HC -9 (v1.7.3) | 2.720 | 34 MB/s | 3240 MB/s |
zlib deflate 1.2.8 -6 | 3.099 | 33 MB/s | 390 MB/s |