linux 压缩大小不一样,linux – 为什么gnu parallel chunking会改善gzip的压缩大小?

原因在于,对于这种特殊的,相当不寻常的输入,较小的放气块优于较大的放气块.默认情况下,gzip使用较大的deflate块,因为这对正常输入数据最有效.并行命令通过每1 MB分解输入来强制几个较小的放气块,从而产生小的增益.虽然大多数街区的大小仍然相同.

通过在deflateInit2()中使用zlib的memLevel参数,可以为每个块设置更小的块大小,从而做得更好.在这里,我每次使用7到2的memLevel值在单个线程中压缩相同的输出,其中较小的memLevel是较小的deflate块大小(请注意,zlib在默认级别上比gzip稍微好一点):

> 9 – 199688429

> 8 – 198554111(默认)

> 7 – 191582070

> 6 – 184880482

> 5 – 181295029

> 4 – 180137425(此输入的最佳值)

> 3 – 181176610

> 2 – 185759115

此数据的最佳memLevel为4,压缩数据比默认memLevel为8小12 MB(9%).对于memLevel 8,deflate块大小为16383个符号,而对于memLevel 4,放气块大小为1023个符号.一个符号是文字字节或匹配.

改进来自输入的极其规则的性质,导致规则的匹配和文字命令序列.块大小越小,出现的这些不同命令就越少,然后它们需要更少的位来对每个命令进行编码.对于memLevel 3来说,这仍然是正确的,但到那时,每个deflate块开头的代码描述的开销取消了较少的不同代码的改进.

zopfli是一个deflate压缩器,它优化了块大小和所选命令,并设法将其压缩为100,656,812字节.虽然花了三个半小时!使用压缩级别11使用pigz调用zopfli.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值