50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

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:5861960
用户头像

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

关注

评论

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

从混沌到清晰,阿里全球商品类目域建设思考

阿里技术

全球化技术能力

基于图数据库 NebulaGraph 实现的欺诈检测方案及代码示例

NebulaGraph

图数据库 反欺诈 安全风控

openGauss内核分析(四):查询重写

要想随时编码即刻创新,这个工具你需要一个

华为云开发者联盟

云计算 后端 华为云 企业号 2 月 PK 榜 华为云开发者联盟

阿里云 EMAS & 魔笔 :1月产品动态

移动研发平台EMAS

阿里云 App 低代码 移动研发

Java实现Http多次请求复用同一连接

Java HTTP

实用指南:如何在Anolis OS上轻松使用 Kata 安全容器?

OpenAnolis小助手

容器 安全 操作系统 龙蜥社区 kata

万物皆可集成资源包!低代码集成系列一网打尽

葡萄城技术团队

ChatGPT被开发者嫌弃?真正的用户群体出现

Onegun

人工智能 ChatGPT

设计原则 — L 里氏替换原则

Lemoon Can

SOLID 设计原则 SOLID原则 里氏替换原则

【我和openGauss的故事】openGauss的WDR报告解读

赛意信息荣获2022年深信服优秀ISV合作伙伴奖 强强联手赋能企业再升级

科技热闻

兴业银行正式加入openGauss社区

如何使用 NFTScan NFT API 检索单个 NFT 资产

NFT Research

API NFT

妙啊,空结构体还能这么用?Go语言的结构体看这篇就够了

王中阳Go

Go golang 高效工作 学习方法

openGauss内核分析(五):统计信息与行数估计

SpringBoot与Loki的那些事

Java Spring Boot 框架

云小课|MRS基础原理之Flink组件介绍

华为云开发者联盟

大数据 华为云 企业号 2 月 PK 榜 华为云开发者联盟

【漏洞发现】|多个严重CVE漏洞被发现,系内存类安全漏洞

云起无垠

漏洞 Fuzzing

【ECCV 2022】TeSTRa:稳定的流式视频识别

Zilliz

计算机视觉

行业大咖云集 多元观点碰撞 OpenHarmony技术峰会与你相约深圳

叶落便知秋

OpenHarmony

数仓专家面对面 | 为什么我选择GaussDB(DWS)

华为云开发者联盟

数据库 后端 华为云 企业号 2 月 PK 榜 华为云开发者联盟

C#/VB.NET 如何在 Word 文档中添加页眉和页脚

在下毛毛雨

C# .net word文档 页眉页脚

存储拆分后,如何解决唯一主键问题?

小小怪下士

Java 程序员 后端 uuid

TiDB Serverless 和技术生态全景

PingCAP

TiDB

一文详解SpEL表达式注入漏洞

华为云开发者联盟

开发 华为云 企业号 2 月 PK 榜 华为云开发者联盟

国内开源生态发展现状:开源基金会与开源组织 | 雨林开源行

开源雨林

Linux 开源 基金会 OSPO

openGauss社区十一月运作报告

GitHub神坛变动!10W字Spring Cloud Alibaba笔记,30W星标登顶第一

Java 微服务 Spring Cloud

AI不仅造就了ChatGPT,也重新定义了模糊测试

云起无垠

模糊测试

提升企业管理效率 从权限控制开始

力软低代码开发平台

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