为了在速度和效率上超过Zlib,Facebook在近六年前开源了Zstandard。Zstandard 1.5提高了中间压缩级别的压缩速度和较高级别的压缩率,并带来了更快的解压速度。 Zstandard支持高达22的压缩级别。由于新的默认匹配查找器,Zstardard 1.5在5到12级和大于256K的输入中达到了更高的压缩速度。根据Facebook的基准测试,改进范围从+25%到+140%,而在压缩率方面并没有明显损失。Facebook称,在严重的高速缓存竞争下,重载机器的结果甚至更好。
最大的收益通常是在大于128KB的文件上实现的。对于小于16KB的文件,默认情况下会恢复到传统的匹配查找器,这将成为更快的匹配器。这个默认策略可以被手动更改:新的匹配查找器可以通过高级参数
ZSTD_c_useRowMatchFinder
,或通过CLI选项--[no-]row-match-finder
,强制启用。 在压缩级别的另一方面,Zstandard默认使用块分割来提高压缩率,尽管不像前面描述的那样有如此惊人的幅度。 效益的大小主要取决于工作负荷的不同。压缩差异很大的文件组成的档案会比压缩熵不大的单个文件(如文本文件/enwik)看到更多的改进。 此外,Facebook的基准测试显示,Zstandard 1.5在22级(允许的最大级别)的压缩率可以提高0.71%。 Zstandard 1.5也明显提高了解压速度,在最好的情况下可提高到21%。不过,Facebook解释到,实际结果主要取决于编译器版本、有效载荷和压缩级别。 一般来说,大多数情况下看到的好处是+1到+9%不等。也有一些异常值,从-4%到+13%。所有这些场景的平均收益为~+4%。 除了提高压缩性能,Zstandard 1.5还默认支持多线程构建,标准化了一些新的API,并废除了一些旧的API。可以在官方发布说明中找到全部细节。
Zstandard是基于Facebook工程师Yann Collet和Chip Turner的工作。特别的是,它利用了Collet以前基于非对称数字系统(ANS)的工作。 Zstandard被集成在Linux内核中,它被用于btrfs和squashfs文件系统,以及FreeBSD,它被用于压缩核心转储。此外,它还被用于Arch Linux和Fedora中。