哪些放气zip算法特征会导致某些数据的重新压缩产生50%的压缩系数?

问题描述

众所周知,重新压缩(压缩压缩的数据集)通常会产生非常低的压缩(或没有压缩)。

因此,我很惊讶地发现一个数据集,其中第二次ZIP重新压缩产生大约50%的压缩系数(通过Unix zip工具的两次运行,在最大压缩系数({{1 }})。

因此,我很好奇:Deflate算法的哪些特征(限制)会导致这种行为?我尝试了其他程序,例如zstd之类的算法在第一次通过时产生了更好的压缩效果

供参考,数据集为here

解决方法

Deflate的匹配长度限制为258个字节。如果经常重复的弦长于此,则第二次压缩可能会产生结果。 zstd代码最多可匹配128K字节的长度。

gzip -9对您的数据一次给出36340381字节。 gzip -9对您的数据两次给出了18860632字节。 zstd -9曾经给出18985681字节。第二个zstd -9仅将其减少到18882745字节。