LZ4 压缩#

LZ4 是一种压缩方案,它基于 LZ77 压缩算法。 它是一种面向字节的编码,通过使用较小的符号对输入流中最近出现的输入字节进行编码来实现压缩。与级联压缩不同,LZ4 压缩不太依赖于具有数值模式的输入数据集,因此更适合于诸如字符串之类的输入。LZ4 压缩方案的详细描述可在 LZ4 压缩 github 页面 上找到。

LZ4 通过扫描数据集并在维护最近看到的输入字节的哈希表时执行编码。如果遇到在哈希表中的新字节,则其对应的符号会简单地用于编码。如果不是,则该字节被放置在哈希表中(可能驱逐现有条目),并为其创建新的编码。回溯窗口和哈希表大小构成了影响压缩率和性能的参数。

为了高效地并行化 LZ4,我们将数据划分为一系列块,其中每个块都是并发压缩(或解压缩)的。每个块的大小都是 nvCOMP LZ4 压缩器的 C 和 C++ API 调用的输入参数,并影响性能和压缩率。