当订单保存无关紧要时,uint64s序列的最佳压缩方法

问题描述 投票:0回答:1

我正在存储10,000 uint64s的数组。这些值是哈希值,因此非常均匀地分布在整个64位空间中,这使得它们不适合压缩(zip只能节省大约3%的成本)。

但是,值的顺序并不重要。我可以使用这些额外的知识来制作更有效的压缩程序吗?一个直接的想法是按顺序对它们进行排序,然后对它们进行bucketize,例如“下一个x值都有前缀a1b2c3”或其他东西。这肯定可以改善拉链,但我可以做得更好吗?谢谢

hash compression
1个回答
2
投票

您可以获得的理论上最好的好处是log2(10000!)位,这是初始80K字节中的大约15K字节。减少不到20%。

如果你真的想尝试挤出大部分内容,可以尝试按排序顺序压缩连续哈希之间的差异。第一个哈希将按原样发送,然后是9,999个差异。我将每个64位差异的高12位分离成不同的块,并用标准的无损压缩器压缩它。每个散列差异的低52位将基本上是噪声,因此在不尝试压缩它的情况下发送它。

您可以使用数字12来查看最适合压缩的内容。也许11或13会更好。

© www.soinside.com 2019 - 2024. All rights reserved.