BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Zstandard:一种新的无损压缩算法

| 作者 谢丽 关注 11 他的粉丝 发布于 2015年1月30日. 估计阅读时间: 3 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

Zstandard(缩写为Zstd)是一种新的无损压缩算法,旨在提供快速压缩,并实现高压缩比。它既不像LZMAZPAQ那样追求尽可能高的压缩比,也不像LZ4那样追求极致的压缩速度。

下面是一组基准测试数据:

 

压缩算法名称

压缩比

压缩速度(MB/s)

解压速度(MB/s)

zlib 1.2.8 -6

3.099

18

275

Zstd

2.872

201

498

zlib 1.2.8 -1

2.73

58

250

LZ4 HC r127

2.72

26

1720

QuickLZ 1.5.1b6

2.237

323

373

LZO 2.06

2.106

351

510

Snappy 1.1.0

2.091

238

964

LZ4 r127

2.084

370

1590

LZF 3.6

2.077

220

502

(环境:Core i5-4300U @ 1.9GHZ;基准测试程序:开源程序fsbench 0.14.3

从上表可以看出,Zstd的压缩比和压缩速度都比较高,而且解压速度大约为每核500MB/s。

Zstd的压缩速度可以根据不同的情况进行配置。在上述测试中,它提供了大约每核200MB/s的速度,可以用于一些实时压缩场景。同时,与LZ4类似,它可以提供平衡压缩比和压缩时间的衍生算法,并且不影响解压性能。

Zstd还有一个特点是内存需求可配置。这使它可以适应内存配置低或者服务器并行处理多个请求的情况。此外,它采用了“有限状态熵(Finite State Entropy,缩写为FSE)”编码器。该编码器是由Jarek Duda基于ANS理论开发的一种新型熵编码器,旨在与“霍夫曼编码器(Huffman encoder)”和“算数编码器(Arithmetic encoder)”相竞争。

另据Cyan4973项目创建者Yann Collet介绍,虽然Zstd是一个速度很快的压缩/解压算法,但它并没有进入LZ4的适用范围。在一项基准测试中(测试方法见这里),Collet得出了这样的结论:

当传输速度高于50MB/s时,LZ4是更好的选择;而当传输速度介于0.5MB/s和50MB/s时,Zstd在速度上领先于其它算法。

此外,在回复用户评论时,Collect比较了Zstd与lzham

根据我的理解,它们的设计出发点不同。Lzham来源于LZMA……以离线压缩场景作为衡量标准……而Zstd的基本原则更像Zlib,但主要有三点变化:

  • FSE代替霍夫曼编码器;
  • 不限匹配尺寸;
  • 偏移量可重复。

最后,请读者朋友们注意:Zstd开发尚处于起步阶段,本文的一些测试结果也只是早期的测试结果,其实现将会随着时间的推移继续改进和提高,尤其是在项目创建的第一年里。


感谢郭蕾对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT