compression - LZ4匹配搜索算法(快速扫描)

标签 compression lossless-compression lz4

我基于无限深度的哈希链实现了基于 LZ77/LZ4(无熵编码)的压缩算法。它运行良好,速度可以接受,但压缩率接近 LZ4。从 LZ4 项目阅读文档和浏览源代码,我了解到它使用深度为 1 的哈希链,但如果我将我的实现的深度固定为 1,LZ4 的性能会优于它。

我无法理解 LZ4 匹配搜索算法(快速扫描)的工作原理。谁能解释一下?

谢谢。

最佳答案

扫描过程采用散列搜索。像下面这样:

  1. Old Bytes----------------anchor------------New bytes----current
  2. h=hash[int4]
  3. reference=hash.get(h)
  4. hash.put(h,current) 用于后面的匹配
  5. int(引用)==int(当前)?处理匹配:重试
  6. 处理比赛

seachMatchNb 变量是一种跳过方式,用于快速匹配,但可能会丢失分钟匹配。

哈希表是JIT风格,只保存偏移量。 readIntEquals 函数进行键匹配。

在学习模式下忽略它。

关于compression - LZ4匹配搜索算法(快速扫描),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27576804/

相关文章:

node.js - 配置 mongodb node.js 驱动程序以使用 snappy 压缩

c - 使用 C 中的简单 HTTP 服务器支持 gzip/zip 文件压缩

java - 如何在 Java 中使用 xz 压缩时获得统一压缩?

java - 在 Jetty 中使用系统类加载器加载外部 jar

java - 提取tar文件时如何检测文件权限?

linux - 留在另一个文件夹中,我如何从另一个目录中提取特定文件?

algorithm - 使整数列表更人性化

php - 我的 Imagick 代码似乎从未调整大小,但仍然产生清晰的图像

python - 在 Python 2.7 中读取大型 lz4 压缩 JSON 数据集