lz4/lz4

GitHub: lz4/lz4

LZ4是一款追求极致速度的无损压缩算法,以极小压缩率代价换取每核500MB/s以上的压缩速度和数GB/s的解压速度,适合对实时性要求高的数据处理场景。

Stars: 11679 | Forks: 1522

# LZ4 - 极速压缩 LZ4 是无损压缩算法, 提供每核 > 500 MB/s 的压缩速度, 可随多核 CPU 扩展。 它具有极快的解码器, 速度可达每核数 GB/s, 通常在多核系统上达到 RAM 速度极限。 速度可以动态调整,通过选择“acceleration”因子 以牺牲压缩比换取更快的速度。 另一方面,也提供了高压缩比的衍生版本 LZ4_HC, 以消耗更多 CPU 时间换取更高的压缩比。 所有版本都具有相同的解压速度。 LZ4 也兼容 [字典压缩](https://github.com/facebook/zstd#the-case-for-small-data-compression), 在 [API](https://github.com/lz4/lz4/blob/v1.8.3/lib/lz4frame.h#L481) 和 [CLI](https://github.com/lz4/lz4/blob/v1.8.3/programs/lz4.1.md#operation-modifiers) 层面均支持。 它可以接收任何输入文件作为字典,但仅使用最后的 64KB。 此功能可与 [Zstandard Dictionary Builder](https://github.com/facebook/zstd/blob/v1.3.5/programs/zstd.1.md#dictionary-builder) 结合使用, 以大幅提升小文件的压缩性能。 LZ4 库作为开源软件提供,使用 BSD 2-Clause 许可证。 ## 基准测试 基准测试使用 @inikep 的 [lzbench] 在 Linux 64位 (Ubuntu 4.18.0-17) 上使用 GCC v8.2.0 编译。 参考系统使用 Core i7-9700K CPU @ 4.9GHz (w/ turbo boost)。 基准测试评估单线程模式下参考 [Silesia Corpus] 的压缩。 | 压缩器 | 因子 | 压缩 | 解压 | | ---------- | ----- | ----------- | ------------- | | memcpy | 1.000 | 13700 MB/s | 13700 MB/s | |**LZ4 default (v1.9.0)** |**2.101**| **780 MB/s**| **4970 MB/s** | | LZO 2.09 | 2.108 | 670 MB/s | 860 MB/s | | QuickLZ 1.5.0 | 2.238 | 575 MB/s | 780 MB/s | | Snappy 1.1.4 | 2.091 | 565 MB/s | 1950 MB/s | | [Zstandard] 1.4.0 -1 | 2.883 | 515 MB/s | 1380 MB/s | | LZF v3.6 | 2.073 | 415 MB/s | 910 MB/s | | [zlib] deflate 1.2.11 -1| 2.730 | 100 MB/s | 415 MB/s | |**LZ4 HC -9 (v1.9.0)** |**2.721**| 41 MB/s | **4900 MB/s** | | [zlib] deflate 1.2.11 -6| 3.099 | 36 MB/s | 445 MB/s | ## 安装 ``` make make install # this command may require root permissions ``` LZ4 的 `Makefile` 支持标准的 [Makefile conventions], 包括 [staged installs], [redirection], 或 [command redefinition]. 它兼容并行构建 (`-j#`)。 ### 构建 LZ4 - 使用 vcpkg 您可以使用 [vcpkg](https://github.com/Microsoft/vcpkg) 依赖管理器下载并安装 LZ4: ``` git clone https://github.com/Microsoft/vcpkg.git cd vcpkg ./bootstrap-vcpkg.sh ./vcpkg integrate install ./vcpkg.exe install lz4 ``` vcpkg 中的 LZ4 移植版本由 Microsoft 团队成员和社区贡献者保持最新。如果版本过时,请在 vcpkg 仓库中 [创建 issue 或 pull request](https://github.com/Microsoft/vcpkg)。 ## 文档 原始 LZ4 块压缩格式在 [lz4_Block_format] 中详细说明。 任意长度的文件或数据流使用多个块进行压缩, 以满足流式传输需求。这些块被组织成一个帧, 定义在 [lz4_Frame_format] 中。 LZ4 的互操作版本也必须遵守帧格式。 ## 其他源代码版本 除了 C 参考源代码外, 许多贡献者已经创建了多种语言版本的 lz4 (Java, C#, Python, Perl, Ruby 等)。 已知源代码移植列表在 [LZ4 Homepage] 上维护。 ### 打包状态 大多数发行版都捆绑了包管理器 允许轻松安装 `liblz4` 库 和 `lz4` 命令行界面。 [![Packaging status](https://repology.org/badge/vertical-allrepos/lz4.svg?columns=4&exclude_unsupported=1)](https://repology.org/project/lz4/versions) ### 特别感谢 - Takayuki Matsuoka, aka @t-mat,感谢其在项目生命周期内提供的卓越的一流支持
标签:BSD许可, LZ4, LZ4_HC, 压缩算法, 基础架构, 大数据, 字典压缩, 实时压缩, 客户端加密, 开源库, 搜索引擎爬虫, 文件压缩, 无损压缩, 目录扫描, 系统工具, 编解码器