【发布时间】:2019-10-16 13:21:35
【问题描述】:
任何压缩算法实现的压缩程度显然取决于所提供的数据。但是,由于压缩数据,显然也增加了一些开销。
我正在处理一个过程,我正在压缩可能是各种类型的数据,但我知道大部分数据会非常小,尽管它通常也足够大,可以从某种程度的压缩中受益。虽然我可能只是在应用压缩之前通过实验确定一个足够好的最小值,但我很好奇是否有一个明确的点表明这绝对不值得。
使用zip 运行一些测试,我压缩了一系列文件,其中分别包含 10、100 和 1000 字节的随机数据和重复的字母表。例如这里是 100 字节字母文件的内容:
abcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyz abcdefghijklmnopqr
我很惊讶地发现文件的压缩版本是 219 字节,尽管有冗余级别。为了比较,随机数据的 100 字节文件变成了 272 字节。
但是,1000 字节的字母文件一直压缩到 227 字节,而随机文件增加到 1174。
是否有明确的最小文件大小,即使是最冗余的文件也不会从这种类型的压缩中受益?
【问题讨论】:
-
如果我对您的示例执行
zip -9 abc.zip abc.txt,Deflate 会将其减少到 33 个字节(您可以通过unzip -v abc.zip看到它)。其余的是与文件 abc.txt 相关的元数据(其名称、时间戳……)。
标签: compression deflate