Zstandard

Zstandard（或Zstd）是由Facebook的开发的一个无损数据压缩算法。该名称也指其C语言的-{zh-hans:参考实现;zh-hant:參考實作}-。第1版的实现于2016年8月31日发布为自由软件Sergio De Simone, Facebook Open-Sources New Compression Algorithm Outperforming Zlib  / InfoQ, Sep 02, 2016

 特色 
设计Zstandard的目的是提供一个类似于DEFLATE算法的压缩比，但更快，特别是解压缩快的算法。它的压缩级别从负5级（最快）到22级（压缩速度最慢，但是压缩比最高）可以-{zh-cn:调节;zh-tw:調整}-。https://github.com/facebook/zstd/releases/tag/v1.3.4  Faster compression levels

zstd套件里面有压缩和解压缩的并行（多线程）实现。从1.3.2版本(2017年10月)开始，zstd 有选择地-{zh-hans:实现;zh-hant:進行}-非常长的搜索和重复数据消除（，128MiB窗口），类似于rzip或lrzip。

压缩速度在最快和最慢级别之间可以相差20倍或更多，而解压缩速度统统很快，在最快和最慢级别之间相差不到20%。 Zstandard命令行有一个“自适应”（）模式，根据I/O条件改变压缩级别，主要是写入输出的速度。

Zstd在其最大压缩级别下的压缩比接近lzma、lzham和ppmx，并且比lza或bzip2性能更好。 Zstandard达到了-{zh-cn:当前;zh-tw:目前}-的-{zh-cn:帕累托最优;zh-tw:帕雷托最適性}-，因为它解压缩的速度比任何其他-{zh-cn:当前;zh-tw:目前}-可用的算法都要快，并且有类似的或者更好的压缩比。 

字典对小文件的压缩比有很大的影响，所以Zstandard可以使用用户提供的压缩字典。它还提供了一种训练模式，能够从一组样本生成一个字典。 特别是，可以加载一个字典来处理文件之间具有冗余的大型文件集，但不一定在每个文件（例如日志文件）内。

使用情况

Linux内核自2017年11月以来就包含了Zstandard (4.14版本) ，作为btrfs和SquashFS文件系统的压缩方法。

2017年，Allan Jude将Zstandard集成到FreeBSD内核中，https://github.com/freebsd/freebsd/commit/28ef16535cde21eeeaf75f6006b3a77952b3b51 用于概念验证OpenZFS压缩方法。  随后，它受集成为-{zh-cn:核心转储;zh-tw:核心傾印}-（）（用户程序和内核崩溃）的压缩器选项。

AWS Redshift和RocksDB数据库支持使用Zstandard进行字段压缩。

2018年3月，Canonical在Ubuntu Linux发行版中测试了默认使用zstd作为deb包压缩方法。与deb包的xz压缩相比，-{zh-cn:级别;zh-tw:等級}-19的zstd解压缩速度要快得多，但代价是套件文件大小增加了6%。Debian开发者希望再等几年再官方采用zstd来-{zh-cn:打包;zh-tw:封裝}-。RFC: Support for zstd in .deb packages? , Ian Jackson, 2018-04-27.

2018年，该算法发布为 RFC 8478，它还定义了相关的媒体类型“application/zstd”、文件扩展名“zst”和HTTP内容编码“zstd”。

2019年10月，随着pacman 5.2包管理器的发布，Arch Linux增加了对zstd包压缩方法的支持， 2020年1月，官方仓库中的包从xz转换为zstd。Arch采用zstd -c -T0 --ultra -20 -，与xz相比，所有压缩包的大小增加了0.8%，解压速度提高了1300%；当使用多个线程时，解压内存增加了50 MiB，压缩内存会增加，但会随着使用的线程数而扩展。[arch-dev-public RFC: (devtools) Changing default compression method to zstd] , Robin Broda, 2019-03-25.Clarify zstd compressor output compatibility guarantees across versions , Yann Collet, assuring important for the same binary result is zstd version and compression level, 2019-03-18.makepkg.conf: change default compression method to zstd , Robin Broda, Levente Polyak, default compression with zstd -c -T0 --ultra -20 -, 2019-12-27.
在.NSZ / .XCZ文件格式中完整实现了该算法以及多种压缩等级， 由任天堂Switch混合游戏机的社区开发。

 许可协议 
参考实现以BSD许可证授权，发布在GitHub上。自1.0版本以来，它有额外的专利权许可。zstd/PATENTS "Additional Grant of Patent Rights Version 2" , Facebook

自1.3.1版，"Zstd v1.3.1 release" , GitHub "facebook/zstd"拿掉此专利权许可，授权改成BSD + GPLv2双授权。"New license" , GitHub "facebook/zstd"

 参见 
 Brotli
 LZFSE - 蘋果公司自iOS 9和OS X 10.11开始使用类似的算法，并也于2016年6月开源。
 LZ4
 zlib

 参考资料 

 外部链接 


 "Smaller and faster data compression with Zstandard "，Yann Collet和Chip Turner，2016年8月31日，Facebook公告
 The Guardian is using ZStandard instead of zlib 

Category:2016年软件
Category:C函式庫
Category:数据压缩自由软件
Category:无损压缩算法
Category:使用BSD许可证的软件