我经常需要压缩彼此非常相似的文件。
目前我使用 7Zip,它使用 8 个内核和 Ultra 设置在大约 35 分钟内将 16GB 文件压缩到 1.2GB。
在我看来,大部分时间都花在计算用于压缩的字典上。由于文件高度相似,实际使用的字典很可能也相似。
是否有基于 Windows 的压缩工具(带有我不知道的选项的 7Zip 或其他工具)可以保存字典并将保存的字典重用于后续文件?
有没有更好的方法来解决保持与我所拥有的压缩率相似的压缩率的问题,同时压缩速度要快得多?
所述的Lempel-谢夫-韦尔奇(LZW)压缩算法本质上是计算密集的,大部分工作本身是实际计算字典。这就是 LZW 的工作原理。
算法本身为它扫描的每个下一个“符号”添加一个新的字典条目,因此在每次迭代期间,一个新条目被添加到字典中。实际上,字典成为文件的压缩副本,因此实际上是 LZW 压缩首先花费大量时间进行计算的唯一内容。
如果您使用Huffman encoding 之类的东西,则确实可以重用字典(以可能的次优压缩率/大小为代价)。然而,大多数现代压缩算法和工具都使用 LZW 算法来提高效率和速度(霍夫曼压缩需要对数据进行两次传递[一次生成霍夫曼树/表,另一次实际压缩数据],而 LZW 可以在单程)。