对比
LZ4 与 Zstandard:帧兼容性和设置
两者都无损,但 LZ4 帧与 Zstandard 帧的字节格式不兼容。
应该选择哪种格式?
先确认接收端支持,再用实际数据比较大小、压缩时间和解压时间。
适用于 LZ4
将文件或连续数据压缩为 LZ4 帧
- 向支持 LZ4 的读取工具交付数据
适用于 Zstandard
无损压缩文件和数据流 · 压缩软件包和数据传输
- 发送和接收端都支持 zstd 时调整速度与压缩率
- 流式处理或使用字典压缩
基本信息
| 项目 | LZ4 | Zstandard |
|---|---|---|
| 扩展名 | .lz4 | .zst |
| MIME 类型 | application/zstd | |
| 常见用途 | 将文件或连续数据压缩为 LZ4 帧 | 无损压缩文件和数据流 · 压缩软件包和数据传输 |
| 打开方式 | 用支持帧格式的工具打开并检查完整性。原始块需要大小等外部信息;改扩展名不会把它封装成帧。 | 使用支持 zstd 的解压工具或库。处理未知压缩文件前,请检查来源、解压后大小和可用内存。 |
| 导出或转换 | 先解压再用 Zstandard 等格式重新压缩,并比较解压后数据的哈希。多文件先用 TAR 打包。保留使用过的外部字典。 | 转换为 gzip 或 xz 时,先解压再重新压缩。之后比较文件内容或校验和,并考虑大小、耗时和接收端兼容性。tar.zst 是 tar 归档再经 zstd 压缩的组合;单独的 .zst 不是归档格式。 |
按用途选择
向支持 LZ4 的读取工具交付数据
将文件或连续数据压缩为 LZ4 帧
LZ4发送和接收端都支持 zstd 时调整速度与压缩率
无损压缩文件和数据流 · 压缩软件包和数据传输
Zstandard流式处理或使用字典压缩
无损压缩文件和数据流 · 压缩软件包和数据传输
Zstandard关键点 1
区分 LZ4 原始块与帧。
进一步了解差异关键点 2
RFC 8878 定义 Zstandard 的帧和字典。
进一步了解差异进一步了解差异
重视快速处理时可评估 LZ4,但也应在相同条件下测试 Zstandard 设置。不能只凭格式名称判断优劣。
- 检查 LZ4 的独立或依赖块及校验和设置。帧规范本身不提供随机访问索引。
- 使用字典时,要给读取端提供对应格式所用的同一字典。多文件需要另用 TAR 等打包。
常见问题
改扩展名就能转换吗?
不能。必须解压后重新压缩,并比较恢复字节的哈希。LZ4 与 Zstandard 的字典也不一定能互换。