我正在构建一个索引,它只是连续存储在二进制文件中的几组有序的 32 位整数。问题是这个文件变得非常大。我一直在考虑添加一些压缩方案,但这有点超出我的专业知识。所以我想知道,在这种情况下哪种压缩算法效果最好?此外,解压必须很快,因为该索引将用于进行查找。
最佳答案
如果您存储的整数很接近(例如: 1, 3 ,4, 5, 9, 10 等...)而不是一些随机的 32 位整数(982346...、3487623412...等),您可以这样做一件事:
找到 差异 在相邻数字之间,例如 2,1,1,4,1... 等(在我们的示例中)然后 霍夫曼编码 这个数字。
如果您将它们直接应用于您拥有的原始数字列表,我认为霍夫曼编码不会起作用。
但是,如果您有一个附近数字的排序列表,则很有可能通过对数字差异进行霍夫曼编码来获得非常好的压缩比,这可能比使用 Zip 库中使用的 LZW 算法更好。
无论如何,感谢您发布这个有趣的问题。
关于indexing - 压缩排序的整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/523733/