【发布时间】:2011-09-29 16:50:01
【问题描述】:
我有一个系统,其中一台机器以包含整数和长整数数组的对象形式生成小块数据。这些块被传递到另一台服务器,该服务器又将它们分发到其他地方。
我想压缩这些对象以减少直通服务器上的内存负载。我知道像 deflate 这样的压缩算法需要构建一个字典,所以这样的东西不会真正适用于这么小的数据。
是否有任何算法可以有效地压缩这样的数据?
如果没有,我可以做的另一件事是将这些块批处理成对象数组,并在数组达到一定大小时对其进行压缩。 但我不愿意这样做,因为我必须更改现有系统中的接口。单独压缩它们不需要任何界面更改,这都是设置的方式。
我认为这并不重要,但目标系统是 Java。
编辑:Elias gamma coding 是否最适合这种情况?
谢谢
【问题讨论】:
-
整数和长整数数组——是否有可能的值,或者它们通常被限制在一个较小的范围内?数组中是否有重复/模式?
-
@foson 这些值可以是任何值。我确定它们属于常规分布,但我没有这些信息。它们是时间戳和指标。我敢肯定多头可能会很大(例如 unix 时间)
-
您确定 deflate 不会对您的数据起作用吗?你测试过吗?
-
大多数通用压缩算法的工作原理是在源数据中查找模式,然后对这些模式使用替代(较小的)编码。击败通用压缩器的唯一方法是识别 GP 压缩器无法识别的模式,或者重新排列数据以便 GP 压缩器可以识别模式。跨度>
-
@ Jim Mischel - 这就是我寻找非 GP 的原因。 Elias 伽马编码可能会解决问题。
标签: algorithm compression