Broo无损压缩算法和增量编码,与Xdelta3进行比较。 家庭项目开发

很高兴欢迎您。 自上一篇文章发表以来已经过去了将近一年,我们准备告诉您算法本身发生了什么以及涉及增量编码的方式。


图片


参赛作品


在发布了有关Broo算法改进的文章后,我们面临着提高压缩水平和性能的障碍,即在不影响解压缩速度的情况下无法提高压缩水平,反之亦然。 我将立即进行保留,所做的改进不会影响算法的其他特征,但是这些更改微不足道,我们将在稍后介绍这些更改。 因此,之后,我们考虑了可以在相似方向应用我们积累的专业知识和知识的地方。 然后选择落在了 增量编码


什么是增量编码?


增量编码Eng。Delta encoding)-一种以串行数据之间的差异( delta )而不是数据本身形式表示数据的方法。

在实践中,如果压缩算法允许您减小文件大小并存储或转发该文件而又不依赖于其他文件,则增量编码算法可以使您基于两个文件(数据集)构建一个较小尺寸的补丁程序(差异)并为该文件应用该补丁程序(数据集)1-获取文件(数据集)2


增量编码最常见的应用程序是更新手机和PC上的应用程序。 无需完全下载应用程序然后替换文件,而是构建了一个小得多的补丁程序(取决于更改数量),这使您可以更快地下载更新,并且应用补丁程序的速度直接影响应用程序本身的更新速度。


如果您知道在其他地方使用增量编码,请在注释中写。


关于对Broo算法的更改


正如我们所说,它们很少:


  • 增加了对x64文件大小2 ^ 64和x32 ​​2 ^ 32文件的支持。
  • 压缩率提高。

这些更改仍处于试验和调试阶段。 主要问题-添加大文件支持后,解压缩速度降低了20%,这对我们来说是不可接受的。 因此,我们仍在寻找解决方案。


下面,我们仅提供一张旧算法比较表,实验表和一些zstd水平表。 上一篇文章中的xml文件。


处理器:Intel i7-7700HQ


记忆体:DDR4-2400


算法名称包装速度减压速度压缩文件大小,字节原始百分比
Memcpy17460 MB /秒17194 MB /秒5345280100.00
zstd 1.3.1 -6141 MB /秒1311 MB /秒58581010.96
兄弟1.211 MB /秒1905 MB /秒60683811.35
zstd 1.3.1 -5196 MB /秒1207 MB /秒61951011.59
zstd 1.3.1 -4357 MB /秒1214 MB /秒63758711.93
zstd 1.3.1 -3366 MB /秒1220 MB /秒63907311.96
兄弟1.114 MB /秒2005 MB /秒64308412.03
zstd 1.3.1 -2394 MB /秒1108 MB /秒69050812.92
zstd 1.3.1 -1479 MB /秒1213 MB /秒70309313.15

与许多算法一样,速度取决于处理器,如表中所示,解压缩速度比Intel i7-7700HQ处理器的第一级zstd快1.5倍以上。 在旧版Intel i3-550上,解压缩速度大约等于zstd解压缩速度,您可以在此处查看比较表。


这表明您可以与各个处理器进行更紧密的集成。 取决于任务的细节。


Delta编码和Broo


您可能已经猜到了,我们开发了自己的增量编码算法,并将其命名为DBroo(Delta Broo)。


主要特点和特点:


  • 支持x64文件大小为2 ^ 64和x32文件大小为2 ^ 32。
  • 处理二进制数据。
  • 允许部分修改将应用补丁的参考文件。

有现成的解决方案,例如diff,bsdiff,xdelta等。 目的是在这个方向上找到最好的(以及负担得起的)并与他竞争。 Xdelta3纯粹是​​实验性的竞争者。 它提供了良好的压缩和相当快的修补程序应用速度。 Xdelta3还用于更新CyanogenMod (现在为LineageOS )。


现在让我们看一下DBroo和Xdelta3的比较表。 作为参考文件,使用“ xml”,作为新文件,使用相同但随机修改的文件。


算法名称补丁创建速度补丁应用速度补丁大小,字节占原件的百分比
Memcpy18052 MB /秒18665 MB /秒5326823100.00
Xdelta3 -9 + Lzma5.40 MB /秒306 MB /秒1065422.00
Xdelta3 -6 + Lzma20 MB /秒310 MB /秒1219162.28
DBroo 1.07.40 MB /秒1600.00 MB /秒1230522.31
Xdelta3 -97.00 MB /秒688.24 MB /秒1797323.37
Xdelta3 -636.71 MB /秒694.09 MB /秒2016813.78
Xdelta3 -359.22 MB /秒637.43 MB /秒2372184.45
Xdelta3 -272.73 MB /秒582.75 MB /秒2792235.24
Xdelta3 -181.43 MB /秒540.53 MB /秒4788248.9

聚苯乙烯


仅针对那些有市场需求的产品进行开发。 因此,我们欢迎您的评论。 我们还创建了一个电报频道


谢谢啦

Source: https://habr.com/ru/post/zh-CN425255/


All Articles