Skip to content

ZSTD

Zstandard 是一个面向通用场景的现代无损压缩算法,目标是在高压缩率和高速度之间提供宽范围可调节的平衡。

核心思想

ZSTD 结合字典匹配和熵编码。它支持多个压缩级别,低级别适合实时数据管道,高级别适合归档。

可以怎样理解它的内部流程

可以把 ZSTD 粗略看成:

text
查找重复片段 -> 生成序列 -> 熵编码 -> 打包成 frame

它的优势不只是“压得不错”,而是允许你在一套生态里,从偏实时到偏归档做连续调节。

工程取舍

维度特点
压缩速度从很快到较慢可调
解压速度通常很快
压缩率通用数据上表现稳定
内存随压缩级别增加
流式支持

常见工程特征

  • 支持 frame 格式,适合文件和流式处理。
  • 支持字典训练,特别适合大量相似小对象。
  • 低级别常被用作系统默认压缩方案,因为总体平衡感很好。

适用场景

  • 日志压缩
  • 数据管道
  • 本地缓存
  • 可调压缩级别的归档任务

调参时通常先看什么

  1. 压缩级别:最直接的速度 / 压缩率旋钮。
  2. 是否启用字典:对小文本、短消息收益可能非常大。
  3. 是否流式:会影响缓冲区和集成方式。

使用时的常见坑

  • 用默认级别测一次就下结论,容易低估它的可调空间。
  • 用已经压缩过的数据做对比,结果常常没有参考价值。
  • 忽略字典训练,会错过它在“小而相似的数据”上的优势。

C++ 示例

查看 ZSTD C++ 示例