我基于无限深度的哈希链实现了基于 LZ77/LZ4(无熵编码)的压缩算法。它运行良好,速度可以接受,但压缩率接近 LZ4。从 LZ4 项目阅读文档和浏览源代码,我了解到它使用深度为 1 的哈希链,但如果我将我的实现的深度固定为 1,LZ4 的性能会优于它。
我无法理解 LZ4 匹配搜索算法(快速扫描)的工作原理。谁能解释一下?
谢谢。
最佳答案
扫描过程采用散列搜索。像下面这样:
- Old Bytes----------------anchor------------New bytes----current
- h=hash[int4]
- reference=hash.get(h)
- hash.put(h,current) 用于后面的匹配
- int(引用)==int(当前)?处理匹配:重试
- 处理比赛
seachMatchNb 变量是一种跳过方式,用于快速匹配,但可能会丢失分钟匹配。
哈希表是JIT风格,只保存偏移量。 readIntEquals 函数进行键匹配。
在学习模式下忽略它。
关于compression - LZ4匹配搜索算法(快速扫描),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27576804/