0

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

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

对于本地压缩,文件的大小会产生影响,因为实际从存储介质(sdcard、硬盘驱动器)读取和写入数据将占总执行的更多部分。

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

我想还有一个调度问题,但粗略估计可能会被忽略。

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

4

3 回答 3

1

通过从随机位置抽取 10-100 个小块对文件进行采样。单独压缩它们。这应该为您提供压缩比的下限。

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

于 2014-10-25T17:56:12.180 回答
0

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

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

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

您还可以使用 DEFLATE 或 LZMA 等算法来计算机制。PPM(Partial by Predicting Matching)可用于预测。

于 2014-10-27T17:56:15.703 回答
0

这取决于数据,但您可以使用图像进行小样本。下采样会改变结果。这是一个示例:PHP - 压缩图像以满足文件大小限制

于 2014-10-27T18:06:38.597 回答