zstd是FB(现在的Meta)名下的一套压缩算法及其工具。常常和之提起的是谷歌的Brotli。
zstd的特定是解压速度快,针对小文件可以采用基于字典的压缩方式。
命令行
Windows可以通过scoop install zstd
安装zstd的命令行。
zstd --train files
可以根据输入文件files
来训练一个字典。
字典的大小默认限制在110K。训练的时候,只读取每个输入文件的131072字节。
Linux下zstd还是带了不少命令行工具的。
文档
文档在https://raw.githack.com/facebook/zstd/release/doc/zstd_manual.html,版本为1.5.2。
1.5.1版本的文档在https://facebook.github.io/zstd/zstd_manual.html可读。
- Introduction
- 压缩级别1到22,20级以上为
--ultra
- 压缩可以
- 单步完成
- 单步完成,但需要辅之以上下文
- 可拆分成若干步
- 对于小数据的压缩可以通过字典显著提供。
- 基于字典的压缩不能拆分成若干布
- 高级的试水功能,可以通过
#define ZSTD_STATIC_LINKING_ONLY
打开,必须在包含zstd.h
之前定义
- 压缩级别1到22,20级以上为
- Version
- Simple API
- Explicit context
- Decompression context
- Advanced compression API (Requires v1.4.0+)
- Advanced decompression API (Requires v1.4.0+)
- Streaming
- Streaming compression - HowTo
- Streaming decompression - HowTo
- Simple dictionary API
- Bulk processing dictionary API
- Dictionary helper functions
- Advanced dictionary and prefix API (Requires v1.4.0+)
- experimental API (static linking only)
- (剩余略)
语言实现
默认zstd是用C/C++实现的。zstd页面列出了许多语言上的绑定或者移植。
C#实现
C#有几种实现,其中https://github.com/oleg-st/ZstdSharp是基于Zstd1.5.2的移植版。
ZstdSharp提供跟原始C/C++接口一致的Unsafe的C#接口。提供了两个名字空间ZstdSharp和ZstdSharp.unsafe。
ZstdSharp提供了三个组件:
- Zstd.Extern
- ZstdSharp
- ZstdSharp.Core
(底线)