如何在压缩之前连接文件比仅压缩文件更有效?

时间:2018-01-08 06:32:43

标签: compression concatenation storage

在"破解PM采访",Lewis Lin建议在压缩之前连接文件以减少gmail的存储空间,我想知道为什么这比压缩文件更好。

1 个答案:

答案 0 :(得分:0)

到目前为止,压缩器都使用数据流中的信息来压缩随后的数据。它们通常有一个窗口,压缩器可以使用该历史记录,从10 KB到数百MB不等。他们拥有的历史越多,后续数据的建模就越好(假设流中的某种程度的相似性),因此压缩效果越好。

因此,压缩器在压缩非常短的文件时特别差。但是,如果你连接类似的短文件,你将在串联上获得比单独使用这些短文件更好的压缩。例如,源代码往往是许多短文件的集合,但它们之间有很多相似之处。将它们压缩在一起可以看到显着的好处而不是单独的。

.zip格式分别压缩所有文件,而.tar.gz格式整体压缩存档,因此有效连接(中间有一些小标题)。早期观察到两者在源文件档案上的压缩效率之间存在显着差异,即使它们都使用相同的压缩数据格式(deflate)。其他压缩器(如zip和通常单独压缩文件)也将具有连接的“实体”压缩模式,例如RAR和7z。这消除了轻松修改或删除单个条目的能力,但这是一个不常见的用例。更常见的是,档案只是作为一个整体构建,然后完全提取出来。