确定用于解压缩流式压缩数据的最佳初始缓冲区大小

时间:2009-06-11 16:41:32

标签: algorithm math compression statistics

我正在尝试计算在解压缩未知大小的数据时要使用的初始缓冲区大小。我有一堆来自现有压缩流的数据点,但不知道分析它们的最佳方法。

数据点是压缩大小和未压缩大小的比率。 例如: 100425(压缩尺寸)x 1.3413(压缩比)= 134,700(未压缩尺寸)

压缩数据流不存储未压缩的大小,因此解压缩程序必须分配初始缓冲区大小并在其溢出时重新分配。给定压缩大小,我将寻找“最佳”初始大小来分配缓冲区。我有超过293,000个数据点。

2 个答案:

答案 0 :(得分:0)

鉴于您有很多关于压缩工作原理的数据点,我建议您分析压缩数据,以获得平均压缩标准和标准偏差。然后,我建议您最初将缓冲区大小设置为原始大小*压缩大小比平均值高2个标准差;这意味着您的缓冲区大小适合93%的情况。如果您希望缓冲区在更多情况下不需要重新分配,请将标准偏差的数量增加到高于您分配的平均值。

答案 1 :(得分:0)

一种简单的方法是使用通用的初始解压缩缓冲区大小,并在每个realloc上加倍大小。这也用在许多动态库中。