对比矩阵
这个矩阵用于快速建立直觉。实际结果会受数据集、压缩级别、CPU、内存和库版本影响。
| 算法 | 压缩率 | 压缩速度 | 解压速度 | 内存 | 兼容性 | 典型定位 |
|---|---|---|---|---|---|---|
| ZSTD | 高 | 可调 | 快 | 中到高 | 高 | 通用现代压缩 |
| LZMA | 很高 | 慢 | 中到快 | 高 | 高 | 归档 |
| BSC | 数据相关 | 数据相关 | 数据相关 | 中到高 | 中 | 块排序学习与实验 |
| LZ4 | 中低 | 很快 | 很快 | 低 | 高 | 实时与热路径 |
| zlib | 中 | 中 | 中到快 | 低 | 很高 | 兼容性优先 |
| Brotli | 高 | 中到慢 | 快 | 中 | 高 | Web 文本资源 |
这些列应该怎么理解
- 压缩率:不是绝对值,而是相对直觉;不同数据集差异非常大。
- 压缩速度:更多影响写链路、构建链路、离线任务。
- 解压速度:更多影响读链路、服务启动、请求响应。
- 兼容性:不仅是“能不能用”,还包括周边工具、协议和默认支持程度。
阅读方式
- 如果解压速度最重要,优先比较 LZ4 和 ZSTD。
- 如果压缩率最重要,优先比较 LZMA、ZSTD 高级别和 Brotli。
- 如果生态兼容性最重要,优先考虑 zlib。
- 如果目标是学习压缩变换,BSC 值得单独研究。
不同算法最容易被忽略的价值
| 算法 | 容易被忽略的点 |
|---|---|
| ZSTD | 它的价值不只是“平衡”,而是可调范围很大 |
| LZMA | 适合归档,不适合所有热路径 |
| BSC | 更适合作为学习与实验对象,而非默认基础设施组件 |
| LZ4 | 真正优势往往体现在系统延迟而不是压缩比 |
| zlib | 兼容性本身就是工程价值 |
| Brotli | 更适合文本和静态分发,不代表所有数据都优 |