Zstandard

壓縮演算法 来自维基百科,自由的百科全书

Zstandard(或Zstd)是由FacebookYann Collet英语Yann Collet开发的一个无损数据压缩算法。该名称也指其C语言参考实现。第1版的实现于2016年8月31日发布为自由软件[2][3][4]

事实速览 原作者, 开发者 ...
Zstandard
原作者Yann Collet
开发者Yann Collet、Przemysław Skibiński(inikep
首次发布2015年1月24日 (2015-01-24)
当前版本1.5.6(2024年3月31日,​10个月前​(2024-03-31[1]
源代码库 编辑维基数据链接
编程语言CC++
操作系统跨平台
平台可移植
类型数据压缩
许可协议双授权:BSD许可证, GPLv2
网站facebook.github.io/zstd/
关闭

特色

设计Zstandard的目的是提供一个类似于DEFLATE算法的压缩比,但更快,特别是解压缩快的算法。它的压缩级别从负5级(最快)到22级(压缩速度最慢,但是压缩比最高)可以调节。[5]

zstd套件里面有压缩和解压缩的并行(多线程)实现。从1.3.2版本(2017年10月)开始,zstd 有选择地实现非常长的搜索和重复数据消除(--long,128MiB窗口),类似于rzip或lrzip。[6]

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

Zstd在其最大压缩级别下的压缩比接近lzma、lzham和ppmx,并且比lzabzip2性能更好。[8][9] Zstandard达到了当前的帕累托最优,因为它解压缩的速度比任何其他当前可用的算法都要快,并且有类似的或者更好的压缩比。[10][11]

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

使用情况

事实速览 扩展名, 互联网媒体类型 ...
Zstandard
扩展名
.zst
互联网媒体类型
application/zstd[14]
格式类型数据压缩
关闭

Linux内核自2017年11月以来就包含了Zstandard (4.14版本) ,作为btrfsSquashFS文件系统的压缩方法。[15][16][17]

2017年,Allan Jude将Zstandard集成到FreeBSD内核中,[18] 用于概念验证OpenZFS压缩方法。[7] 随后,它受集成为核心转储(英语:Core dump)(用户程序和内核崩溃)的压缩器选项。

AWS RedshiftRocksDB数据库支持使用Zstandard进行字段压缩。[19]

2018年3月,CanonicalUbuntu Linux发行版中测试了[20]默认使用zstd作为deb包压缩方法。与deb包的xz压缩相比,级别19的zstd解压缩速度要快得多,但代价是套件文件大小增加了6%。Debian开发者Ian Jackson英语Ian Jackson希望再等几年再官方采用zstd来打包。[21][22][23]

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

2019年10月,随着pacman 5.2包管理器的发布,Arch Linux增加了对zstd包压缩方法的支持,[25] 2020年1月,官方仓库中的包从xz转换为zstd。Arch采用zstd -c -T0 --ultra -20 -,与xz相比,所有压缩包的大小增加了0.8%,解压速度提高了1300%;当使用多个线程时,解压内存增加了50 MiB,压缩内存会增加,但会随着使用的线程数而扩展。[26][27][28][29] 在.NSZ / .XCZ文件格式中完整实现了该算法以及多种压缩等级,[30]任天堂Switch混合游戏机的自制英语homebrew (video games)社区开发。[31]

许可协议

参考实现以BSD许可证授权,发布在GitHub上。自1.0版本以来,它有额外的专利权许可。[32]

自1.3.1版,[33]拿掉此专利权许可,授权改成BSD + GPLv2双授权。[34]

参见

参考资料

外部链接

Wikiwand - on

Seamless Wikipedia browsing. On steroids.