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


0

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


如果文件无法压缩,在最坏的情况下最终只会比原始大小稍大一点,还要弄清楚是否值得压缩将(天真的)需要进行压缩
棘手怪胎

@ratchetfreak首先,这不是我要的。尝试压缩已压缩的文件会浪费CPU周期。我正在努力避免这样做。您虽然提到了压缩通道,但对此有详细说明吗?我认为您的意思是说它需要遍历才能确定是否值得压缩,所以这两种方式都会浪费资源吗?
克里斯,

2
然后是我的评论的第二部分:评估可压缩性(对于朴素的算法)需要进行压缩并比较大小,=>最终结果是您仍然必须压缩文件
棘手的怪胎

1
@ratchetfreak因此,我认为实际上,节省任何资源的唯一方法是检查文件扩展名,并假设仅基于文件扩展名就是浪费(或不浪费)...?
克里斯,

1
@ratchetfreak,在大多数情况下file(1)会告诉您足够的信息,而不进行压缩是否值得进行压缩(取决于文件内容)。
vonbrand

Answers:


1

通常,压缩是通过以可逆的方式从数据流中删除多余的构造而进行的。

自相关是您可以用来确定多少日期被认为是冗余的一种方法,即自相关,它越低,信号可压缩的程度就越小(确实存在例外,具体取决于所使用的算法)。

但是,找到自相关的最低阶算法约为O(n*log(n))。我相信大多数压缩算法都是按顺序O(n)进行的,这使得在很长的文件上运行它是一种浪费。(尝试压缩和检查文件大小会更有效)


相关的SO帖子,供任何好奇的人使用,请确认上述OP的内容。Huffman和LZW编码均O(n)及时运行。
突破

0

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

  1. 未经任何其他检查,不会压缩所有以.jpg和.mp3结尾的文件
  2. 在所有情况下,所有以.doc和.pdf结尾的文件都经过压缩,而无需任何其他检查
  3. 小于1k的所有文件都不会进行压缩,而无需任何其他检查
  4. 使用功能COMPRESSION_CHECK检查所有其他文件

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

(例如,您还可以定义规则,这些规则从不另外压缩特殊人员或小组的文件,以便使用文件浏览器轻松还原,但这与您的问题无关)


是的,我看到了,所有这些都可以检查文件扩展名和文件大小。我希望有一些更详细的说明。
克里斯,

根据您对@ratchetfreak的回复,这是最好的选择,对吗?
Jasjeev Singh

显然,我或多或少地在寻找其他选择(如果有)。如果可以的话,我会投票赞成,但是我在SuperUser上还没有任何代表。(真的不明白为什么Rep不在Stack站点之间转移。)
Chris

@Chris一旦克服障碍,就会在您登录的任何新网站上获得100代表奖金
棘手怪胎
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.