跳转至

字节数据 数据压缩

时间:2020-09-29 11:11:11

参考:

  1. java常见压缩与解压算法
  2. LZ4
  3. lz4 官网
  4. 无损压缩算法

数据压缩#

数据压缩是为了减少数据占用的空间,是指把原始数据转换成占用空间更小的压缩数据的过程。

比如说原始数据 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