硬核干货——《中小企业 AI 实战指南》免费下载! 了解详情
写点什么

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

  • 2015-01-29
  • 本文字数:976 字

    阅读完需:约 3 分钟

Zstandard (缩写为 Zstd)是一种新的无损压缩算法,旨在提供快速压缩,并实现高压缩比。它既不像 LZMA ZPAQ 那样追求尽可能高的压缩比,也不像 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 )关注我们,并与我们的编辑和其他读者朋友交流。

2015-01-29 19:5861938
用户头像

发布了 1008 篇内容, 共 436.6 次阅读, 收获喜欢 346 次。

关注

评论

发布
暂无评论
发现更多内容

10 个超棒的 JavaScript 简写技巧

前端依依

程序员 大前端 js 代码规范

Flink生态提供的其它工具(十一)

Databri_AI

sql flink CEP

3天倒计时!百度机器学习训练营正式开播啦!(加QQ群941354305)

有只小耳朵

人工智能 深度学习 学习 AI AI Studio

地府鬼神图关系构建

6979阿强

图算法 图计算 GraphScope

极光开发者周刊【No.0820】

极光GPTBots-极光推送

云计算成为趋势,北鲲云超算平台布局云计算市场?

北鲲云

时序数据到底是什么,为什么我们需要时序数据库?

数据库 大数据 时序数据库 tsdb 数据智能

Springboot 结合 Netty 实战聊天系统

声网

音视频

Go 语言, 一文彻底搞懂 iota 实现原理

微客鸟窝

Go 语言 8月日更

【设计模式】访问者模式

Andy阿辉

C# 后端 设计模式 8月日更

【回帖赢大奖】AI+开发者=?

百度大脑

CRLF、CSRF、SSRF攻击与利用

网络安全学海

黑客 网络安全 信息安全 WEB安全 漏洞挖掘

销售 小姐姐 给买家打分系统,用 Python Django 又整了一个花活

梦想橡皮擦

8月日更

在线HTML5,CSS3,VueJS,jQuery运行测试练习工具

入门小站

工具

百度智能云最新成绩单亮相百度世界大会2021,“云智一体”再升级!

百度大脑

人工智能 百度

【得物技术】浅谈Redis集群下mget的性能问题

得物技术

redis 性能优化 性能 redis集群 mget

前端自动化测试及 Karma 介绍

devpoint

单元测试 自动化测试 Karma 8月日更

秀到飞起!Alibaba全新出品JDK源码学习指南(终极版)限时开源

今晚早点睡

源码

开源应用中心 | 做项目,不敏捷?快来部署这款灵活的项目管理系统

网络攻防学习笔记 Day111

穿过生命散发芬芳

网络安全 8月日更

上游思维:用小行动获取反馈

石云升

读书笔记 8月日更 上游思维

Vue进阶(五十一): vue-cli 脚手架 webpack.base.conf.js 配置文件讲解

No Silver Bullet

Vue 8月日更

图计算之开局女朋友跑了2

Zhuan

图计算 GraphScope 图分析

金九银十旗开得胜!秋招字节正式批4面,顺利拿到offer

编程susu

Java 编程 程序员 面试 编程开发

大数据技术不能被平台滥用,必须维护消费者的合法权益

石头IT视角

Linux之bc命令

入门小站

Linux

基于一万小时定律去规划职业

非著名程序员

生涯规划 职场 职业规划 8月日更

Vue进阶(五十二):vue-cli 脚手架 webpack.dev.conf.js 配置文件详解

No Silver Bullet

Vue 8月日更

Ansible 变量

耳东@Erdong

变量 ansible 8月日更

Netty如何解决粘包以及拆包问题

慕枫技术笔记

后端 Netty

CSS的设计模式(一)OOCSS

Augus

CSS 8月日更

Zstandard:一种新的无损压缩算法_语言 & 开发_谢丽_InfoQ精选文章