Skip to content

场景选型

日志和数据管道

优先考虑 ZSTD 或 LZ4。ZSTD 提供更好的压缩率和可调级别,LZ4 更适合极低延迟路径。

如果日志需要长期保留但也经常回放,ZSTD 往往是更稳的折中;如果日志只是短期缓冲或跨进程传递,LZ4 更容易获得低延迟收益。

长期归档

优先考虑 LZMA 或 ZSTD 高级别。如果数据偏 Web 文本资源,也可以比较 Brotli。

这里最重要的是确认“写慢一点是否可以接受”。归档任务通常允许更慢压缩,但恢复时间和内存占用仍然要在演练中验证。

Web 内容

优先考虑 Brotli 和 zlib。Brotli 更适合现代浏览器环境,zlib/gzip 兼容性更强。

常见做法不是“二选一”,而是保留 gzip 兼容路径,同时为支持 Brotli 的客户端提供更小的资源。

嵌入式或低资源环境

优先关注内存和解压实现复杂度。LZ4 和 zlib 通常比高压缩率算法更容易控制资源。

如果设备端主要负责解压而不是压缩,那么解压代码复杂度、二进制体积和峰值内存常常比理论压缩率更重要。

小文件和大量相似对象

这类场景往往值得优先考虑 ZSTD 的字典能力,或者至少专门测试“是否该引入字典训练”。
单纯比较“不开字典时的大文件 benchmark”常常会错过真实收益点。

学习算法思想

  • 字典匹配:LZ4、zlib、ZSTD、LZMA
  • 熵编码:zlib、ZSTD、Brotli
  • 上下文建模:LZMA、Brotli
  • 块排序:BSC

一个简化的场景决策表

场景更值得先试的算法主要原因
热路径、低延迟LZ4极快
通用后端服务ZSTD综合最平衡
归档 / 发布包LZMA、ZSTD更重视压缩率
浏览器静态资源Brotli、zlib文本优化 + 兼容性
老系统 / 强兼容zlib生态成熟
学习变换类思路BSC便于理解块排序