是否有任何库可以确定文件在传输之前是否值得压缩?

是否有任何库可以确定文件在传输之前是否值得压缩?

我读到过,有时 .mp3 或压缩图像等文件不值得压缩(例如使用 zlib),因为它们已经压缩,而且它们浪费的 CPU 资源比节省的空间还多。有没有推荐的库可以确定文件在传输之前是否值得压缩?

答案1

压缩通常通过可逆的方式从数据流中删除冗余结构。

您可以使用以下方法来确定日期中有多少内容可视为冗余:自相关该值越低,信号的压缩性越差(根据所使用的算法,确实存在例外)。

然而,查找自相关的最低阶算法的阶数为O(n*log(n))。我相信大多数压缩算法的阶数为,O(n)因此在非常长的文件上运行它是一种浪费。(尝试压缩并检查文件大小会更有效)

答案2

在 StoreBackup 中,您可以定义规则。规则可以是不同检查的组合,例如,取决于文件后缀。但是还有一个特殊函数 COMPRESSION_CHECK,它根据文件的内容来决定。使用 COMPRESSION_CHECK 检查每个文件没有多大意义,因此您可以定义例如以下内容:

  1. 所有以 .jpg 和 .mp3 结尾的文件未经任何额外检查均不压缩
  2. 所有以 .doc 和 .pdf 结尾的文件均会进行压缩,无需进行任何额外检查
  3. 所有小于 1k 的文件均不压缩,无需任何额外检查
  4. 所有其他文件都使用 COMPRESSION_CHECK 函数进行检查

这是在参考文献中描述的行为文档

(例如,您还可以定义规则,另外永远不会压缩来自特殊人员或团体的文件,以便更轻松地使用文件浏览器恢复,但这与您的问题无关)

相关内容