我有一些压缩文件,我需要分发给用户,其中大约130个。每个zip文件包含许多类似的文本、html、xml和jpg文件。总共,zip文件总计146 In;解压缩后,其内容共计551 In。
我想把所有这些文件一起以尽可能小的格式分发给用户。我研究了两种不同的方法,每种方法使用两种不同的压缩方案,zip和7zip (据我了解,它们要么是LZMA,要么是其中的一个变体):
single.zip/7z)combined.zip/7z)例如,假设我有3个zip文件,A.zip、B.zip和C.zip,每个文件包含一个文本文件、一个html文件和一个XML文件。使用方法1,将创建一个包含A.zip、B.zip和C.zip的压缩文件。使用方法2,将创建一个包含A.txt、A.html、A.xml、B.txt、B.html、B.xml、C.txt、C.html和C.xml的压缩文件。
我的假设是,在这两种压缩方案中,方法2生成的文件都会比方法1生成的文件更小,或者至少与方法1生成的文件大小相同,因为您可以通过综合考虑所有文件来利用效率。至少,方法2将避免多个zip文件的开销。
令人惊讶的结果(由7zip工具生成的文件大小)如下:
对于7zip格式产生比zip格式更小的文件(结果2/4和结果1/3),我并不感到奇怪,因为它通常比zip压缩得更好。令人惊讶的是,对于zip格式来说,将所有130个zip文件压缩在一起比压缩所有未压缩的内容(结果3和结果1)的输出文件要小。
为什么将几个压缩文件一起压缩比将解压缩的内容一起压缩更有效?
我唯一能想到的是,在压缩过程中,7zip格式可以跨所有文件内容构建一个字典,这样它就可以利用文件之间的相似之处,而zip格式则在每个文件中构建字典。这是真的吗?即便如此,也无法解释为什么结果3比结果1大7兆。
谢谢你的帮助。
发布于 2020-08-27 04:24:34
In 2011, TopTenReviews found that the 7z compression was at least 17% better than ZIP,[15] and 7-Zip's own site has since 2002 reported that while compression ratio results are very dependent upon the data used for the tests, "Usually, 7-Zip compresses to 7z format 30–70% better than to zip format, and 7-Zip compresses to zip format 2–10% better than most other zip-compatible programs."[16]
发布于 2021-10-04 20:20:38
为什么将几个压缩文件一起压缩比将解压缩的内容一起压缩更有效呢?
您的假设是正确的: 7zip使用固体压缩,而zip不使用。它的工作原理和你的字典想法很相似。通过将不同文件的公共部分合并到一个“块”中,从而缩小大小。
https://stackoverflow.com/questions/21992551
复制相似问题