Heidi Labs
GitHub TrendingGitHub Trending 项目约 4 分钟1,720 字

LZ4:极速压缩算法

本文目录

LZ4 是一种无损压缩算法,单核压缩速度超过 500 MB/s,并可随多核 CPU 扩展。它配备极快的解码器,单核速度可达数 GB/s,在多核系统上通常能达到内存带宽的极限。

压缩速度可以动态调节,通过选择「加速」(acceleration)因子,以压缩率换取更快的速度。另一方面,它还提供高压缩衍生版本 LZ4_HC,以 CPU 时间换取更好的压缩率。所有版本的解压速度相同。

LZ4 也兼容字典压缩(dictionary compression),在 API 和命令行(-D)层面均可使用。它可以接收任意输入文件作为字典,但只使用最后 64 KB。该能力可与 Zstandard 字典构建器(Zstandard Dictionary Builder)结合使用,以大幅提升小文件的压缩性能。

LZ4 库以 BSD 2-Clause 许可作为开源软件提供。lz4 命令行工具采用 GPL-2.0-or-later 许可。

基准测试#

该基准使用 @inikep 的 lzbench v2.4.1,在 Linux 64 位(Ubuntu 24.04)上用 GCC v13.3.0 编译。参考系统使用 Core i7-9700K CPU。基准在单线程模式下评估对参考 Silesia 语料库的压缩。

压缩器压缩倍数压缩速度解压速度
memcpy1.00013700 MB/s13700 MB/s
LZ4 default (v1.11.0)2.112770 MB/s4950 MB/s
LZO 2.10 -12.108660 MB/s800 MB/s
QuickLZ 1.5.1b7 -12.238580 MB/s780 MB/s
Snappy 1.3.12.090520 MB/s1350 MB/s
Zstandard 1.5.7 -12.896510 MB/s1570 MB/s
LZF v3.62.073375 MB/s920 MB/s
zlib-ng 2.3.3 -12.252250 MB/s555 MB/s
zlib deflate 1.3.2 -12.743110 MB/s410 MB/s
LZ4 HC -9 (v1.11.0)2.71740 MB/s4800 MB/s
zlib deflate 1.3.2 -63.10636 MB/s430 MB/s

安装#

make
make install # this command may require root permissions

LZ4 的 Makefile 支持标准 Makefile 约定,包括分阶段安装、重定向和命令重定义。它兼容并行构建(-j#)。

其他构建系统(CMake、Meson、Visual Studio)位于 build/ 目录。

使用 vcpkg 构建 LZ4#

你可以使用 vcpkg 依赖管理器下载并安装 LZ4:

git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg integrate install
./vcpkg install lz4

vcpkg 中的 LZ4 移植包由 Microsoft 团队成员和社区贡献者保持更新。如果版本过旧,请在 vcpkg 仓库中创建 issue 或 pull request。

文档#

原始 LZ4 块压缩格式详见 lz4_Block_format。

任意长度的文件或数据流会为满足流式需求而使用多个块进行压缩。这些块被组织成一个帧(frame),定义见 lz4_Frame_format。可互操作的 LZ4 版本也必须遵循帧格式。

库 API 在其头文件中说明:lz4.h(块 API)、lz4hc.h(高压缩)和 lz4frame.h(帧 API)。

其他源码版本#

除 C 参考实现外,许多贡献者在多种语言(Java、C#、Python、Perl、Ruby 等)中创建了 lz4 版本。已知源码移植版的列表维护在 LZ4 主页上。

打包状态#

大多数发行版都捆绑了包管理器,可轻松安装 liblz4 库和 lz4 命令行界面。

特别感谢#

Takayuki Matsuoka(即 @t-mat),感谢他在本项目整个生命周期中提供了卓越的一流支持。

关于#

极速压缩算法

www.lz4.org

主题:c、compression、lz4