ZSTD
Zstandard 是一个面向通用场景的现代无损压缩算法,目标是在高压缩率和高速度之间提供宽范围可调节的平衡。
核心思想
ZSTD 结合字典匹配和熵编码。它支持多个压缩级别,低级别适合实时数据管道,高级别适合归档。
可以怎样理解它的内部流程
可以把 ZSTD 粗略看成:
text
查找重复片段 -> 生成序列 -> 熵编码 -> 打包成 frame它的优势不只是“压得不错”,而是允许你在一套生态里,从偏实时到偏归档做连续调节。
工程取舍
| 维度 | 特点 |
|---|---|
| 压缩速度 | 从很快到较慢可调 |
| 解压速度 | 通常很快 |
| 压缩率 | 通用数据上表现稳定 |
| 内存 | 随压缩级别增加 |
| 流式 | 支持 |
常见工程特征
- 支持 frame 格式,适合文件和流式处理。
- 支持字典训练,特别适合大量相似小对象。
- 低级别常被用作系统默认压缩方案,因为总体平衡感很好。
适用场景
- 日志压缩
- 数据管道
- 本地缓存
- 可调压缩级别的归档任务
调参时通常先看什么
- 压缩级别:最直接的速度 / 压缩率旋钮。
- 是否启用字典:对小文本、短消息收益可能非常大。
- 是否流式:会影响缓冲区和集成方式。
使用时的常见坑
- 用默认级别测一次就下结论,容易低估它的可调空间。
- 用已经压缩过的数据做对比,结果常常没有参考价值。
- 忽略字典训练,会错过它在“小而相似的数据”上的优势。
C++ 示例
查看 ZSTD C++ 示例。