LZ4
LZ4 是一个以速度为核心目标的无损压缩算法,常用于实时系统、内存缓存和高吞吐数据流。
核心思想
LZ4 使用轻量级字典匹配,格式和实现都偏向快速压缩与快速解压。
可以怎样理解它的设计哲学
LZ4 的重点不是“把每一个字节都压到极致”,而是:
text
尽快找到可接受的重复
-> 尽快编码
-> 尽快恢复因此它常常在系统热路径、缓存、流式传输、临时中间结果里非常有价值。
工程取舍
| 维度 | 特点 |
|---|---|
| 压缩速度 | 很快 |
| 解压速度 | 很快 |
| 压缩率 | 通常低于 ZSTD/LZMA/Brotli |
| 内存 | 低 |
| 流式 | 支持 |
常见工程特征
- 实现简单,部署和调试成本较低。
- 解压通常也非常快,这对读路径很重要。
- 更像“用 CPU 换最小延迟”,而不是“用 CPU 换更高压缩率”。
适用场景
- 实时传输
- 内存缓存
- 日志热路径
- 对延迟敏感的数据处理
调参时通常先看什么
- 是否直接用默认快速模式。
- 是否需要 frame 格式而不是裸 block 接口。
- 数据本身是否值得压缩;对高度随机数据它往往意义不大。
使用时的常见坑
- 把它和高压缩率算法直接比“最终文件大小”,容易误判它的定位。
- 忽略整体延迟收益,只盯着压缩率,会错过它最核心的价值。
C++ 示例
查看 LZ4 C++ 示例。