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

参赛作品
在发布了有关Broo算法改进的文章后,我们面临着提高压缩水平和性能的障碍,即在不影响解压缩速度的情况下无法提高压缩水平,反之亦然。 我将立即进行保留,所做的改进不会影响算法的其他特征,但是这些更改微不足道,我们将在稍后介绍这些更改。 因此,之后,我们考虑了可以在相似方向应用我们积累的专业知识和知识的地方。 然后选择落在了 增量编码 。
什么是增量编码?
增量编码 ( Eng。Delta encoding)-一种以串行数据之间的差异( delta )而不是数据本身形式表示数据的方法。
在实践中,如果压缩算法允许您减小文件大小并存储或转发该文件而又不依赖于其他文件,则增量编码算法可以使您基于两个文件(数据集)构建一个较小尺寸的补丁程序(差异)并为该文件应用该补丁程序(数据集)1-获取文件(数据集)2 。
增量编码最常见的应用程序是更新手机和PC上的应用程序。 无需完全下载应用程序然后替换文件,而是构建了一个小得多的补丁程序(取决于更改数量),这使您可以更快地下载更新,并且应用补丁程序的速度直接影响应用程序本身的更新速度。
如果您知道在其他地方使用增量编码,请在注释中写。
关于对Broo算法的更改
正如我们所说,它们很少:
- 增加了对x64文件大小2 ^ 64和x32 2 ^ 32文件的支持。
- 压缩率提高。
这些更改仍处于试验和调试阶段。 主要问题-添加大文件支持后,解压缩速度降低了20%,这对我们来说是不可接受的。 因此,我们仍在寻找解决方案。
下面,我们仅提供一张旧算法比较表,实验表和一些zstd水平表。 上一篇文章中的xml文件。
处理器:Intel i7-7700HQ
记忆体:DDR4-2400
算法名称 | 包装速度 | 减压速度 | 压缩文件大小,字节 | 原始百分比 |
---|
Memcpy | 17460 MB /秒 | 17194 MB /秒 | 5345280 | 100.00 |
zstd 1.3.1 -6 | 141 MB /秒 | 1311 MB /秒 | 585810 | 10.96 |
兄弟1.2 | 11 MB /秒 | 1905 MB /秒 | 606838 | 11.35 |
zstd 1.3.1 -5 | 196 MB /秒 | 1207 MB /秒 | 619510 | 11.59 |
zstd 1.3.1 -4 | 357 MB /秒 | 1214 MB /秒 | 637587 | 11.93 |
zstd 1.3.1 -3 | 366 MB /秒 | 1220 MB /秒 | 639073 | 11.96 |
兄弟1.1 | 14 MB /秒 | 2005 MB /秒 | 643084 | 12.03 |
zstd 1.3.1 -2 | 394 MB /秒 | 1108 MB /秒 | 690508 | 12.92 |
zstd 1.3.1 -1 | 479 MB /秒 | 1213 MB /秒 | 703093 | 13.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”,作为新文件,使用相同但随机修改的文件。
算法名称 | 补丁创建速度 | 补丁应用速度 | 补丁大小,字节 | 占原件的百分比 |
---|
Memcpy | 18052 MB /秒 | 18665 MB /秒 | 5326823 | 100.00 |
Xdelta3 -9 + Lzma | 5.40 MB /秒 | 306 MB /秒 | 106542 | 2.00 |
Xdelta3 -6 + Lzma | 20 MB /秒 | 310 MB /秒 | 121916 | 2.28 |
DBroo 1.0 | 7.40 MB /秒 | 1600.00 MB /秒 | 123052 | 2.31 |
Xdelta3 -9 | 7.00 MB /秒 | 688.24 MB /秒 | 179732 | 3.37 |
Xdelta3 -6 | 36.71 MB /秒 | 694.09 MB /秒 | 201681 | 3.78 |
Xdelta3 -3 | 59.22 MB /秒 | 637.43 MB /秒 | 237218 | 4.45 |
Xdelta3 -2 | 72.73 MB /秒 | 582.75 MB /秒 | 279223 | 5.24 |
Xdelta3 -1 | 81.43 MB /秒 | 540.53 MB /秒 | 478824 | 8.9 |
聚苯乙烯
仅针对那些有市场需求的产品进行开发。 因此,我们欢迎您的评论。 我们还创建了一个电报频道 。
谢谢啦