更快更小的压缩工具zstd
背景
看到新闻说ArchLinux决定采用zstd作为默认压缩算法.
介绍
全称Zstandard.
由Facebook的Yann Collet开发.初始在2015年公布.
官方数字来看,压缩又快又小.而且支持多核心解压,看起来没有短板.
zstd的压缩级别从1到19(还可以解锁到22但多消耗内存),默认3.
不同的压缩级别,压缩时间差别很大,但解压起来时间都差不多.
可以使用 --adapt
来自动尝试压缩级别,或许磁盘很快的话会使用更低的级别?
官方提示,多线程下使用 --adapt
可能会卡顿.
默认使用单核心压缩,可以使用 -T
指定使用核心数,
当指定 -T0
时尝试使用所有核心.
同时还有快捷方式 zstdmt
表示 zstd -T0
.
另外官方还招安了类似 pigz
的 pzstd
.
目前来看 pzstd
比 zstdmt
要快一些,尤其是在高压缩级别下,但压缩后体积略微增加.
与tar集成
集成起来很简单,懒汉做法可以是
1 | tarup() { |
将其中的 pzstd
替换成 zstdmt
也可以
windows上的问题
scoop安装的zstd不会附带 zstdmt
和 pzstd
, 暂时可以使用
1 | tarup() { |
与pigz实测对比
以压缩grpc官方仓库为例
1 | # pzstd压缩更快 |
软件本身使用
1 | 用某项目文件夹制作一个大的tar文件 |
评价
印象大小(小的好):
程序 | 大小 |
---|---|
pigz | 100% |
zstd-3 | 85%~100% |
zstd-19 | 50%~ |
印象速度(小的好)
程序 | 速度 |
---|---|
pigz | 100% |
zstdmt-3 | 20% |
pzstd-3 | 19%~20% |
zstdmt-19 | 400% |
pzstd-19% | 350%~400% |
- 已经有足够理由切换到
pzstd
或zstdmt
- 同时如果不是特别强调大小,默认的级别3挺好的