紧凑地序列化64位整数

时间:2017-03-01 22:18:26

标签: java arrays networking compression

有哪些技术可用于通过网络高效发送大量整数?

我有100k - 1M(已排序)整数,我需要序列化并通过网络发送它。

我能想到的一个简单技术是在base36中对它们进行编码,从而减小尺寸。

1 个答案:

答案 0 :(得分:1)

如果列表很大,您可以在序列化数字上应用zip来减小大小。 Base36确实可能会减小尺寸。

进一步优化需要对数字进行一些信息和假设。

例如,当数字被排序时,您可以发送第一个“完整”数字,其余数字与前一个“完整”之间的差异。

如果可以保证2个邻居之间的差异小于32位数(Integer.MAX_VALUE),则可以在64位空间放置2个数字:delta1 + (delta2 << 64)

但如上所述,所有其他优化都依赖于有关数字的信息。