预测文件无损压缩的时间或压缩比?

时间:2014-10-25 17:44:03

标签: compression lossless-compression lossless data-comparison

使用某种无损压缩算法压缩文件时,如何能够预测执行时间和/或压缩比?我特别关注本地压缩,因为如果你知道本地压缩的时间和压缩比,你可以根据当前可用的网络吞吐量轻松计算网络压缩的时间。

我们假设您有一些关于文件的信息,例如大小,冗余,类型(我们可以说文字以保持简单)。也许我们有一些来自实际先前测量的统计数据。还需要做什么来执行预测执行时间和/或压缩比(即使是非常粗略的预测)。

对于本地压缩,文件的大小会有效,因为实际读取和从存储介质(SD卡,硬盘驱动器)写入数据将占据总执行的更主要部分。

实际压缩部分可能取决于冗余/类型,因为大多数压缩算法通过压缩小块数据(100kb左右)来工作。例如,较大的HTML / Javascripts文件压缩得更好,因为它们具有更高的冗余度。

我想也存在调度问题,但粗略估计可能会忽略这一点。

这个问题有时会让我感到安静。我一直想知道一些低开销代码(比如在服务器上)是否可以预测在执行实际压缩之前压缩文件需要多长时间?

3 个答案:

答案 0 :(得分:1)

通过从随机位置获取10-100个小块来对文件进行采样。单独压缩它们。这应该会给你压缩比的下限。

如果块不是太小,这只会返回有意义的结果。压缩算法必须能够利用一定大小的历史记录来预测下一个字节。

答案 1 :(得分:0)

可以使用以下公式计算压缩比:

http://geekresearchlab.net/mtechproject/content/public/upload/5_2_o.jpg

性能基准测试可以使用V8或Sunspider完成。

您还可以使用DEFLATE或LZMA等算法来计算机制。 PPM(部分通过预测匹配)可用于预测。

答案 2 :(得分:0)

这取决于数据,但是对于图像,您可以采用小样本。下采样会改变结果。以下是一个示例:PHP - Compress Image to Meet File Size Limit