Compression 为文件的无损压缩预计算时间或压缩比?

Compression 为文件的无损压缩预计算时间或压缩比?,compression,lossless-compression,lossless,data-comparison,Compression,Lossless Compression,Lossless,Data Comparison,使用某种无损压缩算法压缩文件时,如何预测执行时间和/或结果压缩比?我特别关注本地压缩,因为如果您知道本地压缩的时间和压缩比,您可以根据当前可用的网络吞吐量轻松计算网络压缩的时间 假设您有一些关于文件的信息,比如大小、冗余、类型(我们可以说文本来保持简单)。也许我们有一些以前实际测量的统计数据。执行执行时间和/或压缩比预测还需要什么(即使是非常粗略的预测) 仅对于本地压缩,文件的大小会产生影响,因为在存储介质(SD卡、硬盘驱动器)中读取和写入数据的实际操作将占据整个执行过程中更为主要的部分 实际的

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

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

仅对于本地压缩,文件的大小会产生影响,因为在存储介质(SD卡、硬盘驱动器)中读取和写入数据的实际操作将占据整个执行过程中更为主要的部分

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

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


这是一个有时在我脑海中悄无声息的问题。我一直在想,一些低开销的代码(比如服务器上的代码)是否可以预测在执行实际压缩之前压缩一个文件需要多长时间?

从随机位置提取10-100个小片段,对文件进行采样。分别压缩它们。这会给你一个压缩比的下限


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

压缩比可以通过以下公式计算:

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


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

这取决于数据,但对于图像,您可以采集小样本。下采样将改变结果。这里有一个例子:。

这是相当广泛的。如果您有“统计数据”(即从类似文件的以前工作负载中获取的测量数据),那么您可以通过插值大概得到一个估计值。在一般情况下,还不清楚是否有通用的解决方案。(你是如何准确衡量“冗余度”的