适用于小块数据的良好压缩算法?(大约2k)

mar*_*hon 6 compression algorithm

我有一个系统,一台机器以包含整数和长整数的对象的形式生成小块数据.这些块被传递给另一个服务器,后者又将它们分发到其他地方.

我想压缩这些对象,以减少传递服务器上的内存负载.我知道像deflate这样的压缩算法需要构建一个字典,所以像这样的东西不能真正处理这么小的数据.

是否有任何算法可以有效地压缩这样的数据?

如果没有,我可以做的另一件事是将这些块批处理成对象数组,并在数组达到一定大小后压缩它. 但我不愿意这样做,因为我必须更改现有系统中的接口.单独压缩它们不需要任何界面更改,这是所有设置的方式.

不是我认为这很重要,但目标系统是Java.

编辑:Elias gamma编码是否适合这种情况?

谢谢

nob*_*ody 1

Elias Gamma 编码实际上可能会增加数据的大小。

您已经有了数字的上限(无论适合 4 字节或可能 8 字节 int/long 的数字)。此方法对数字的长度进行编码,后跟您的数字(可能不是您想要的)。如果你得到许多小值,它可能会使事情变得更小。如果您还获得较大的值,则可能会增加大小(8 字节无符号最大值将几乎变为两倍大)。

查看数据包的熵。如果接近最大值,压缩将毫无用处。否则,尝试不同的 GP 压缩器。不过,我不确定压缩和解压缩所花费的时间是否值得减少大小。