游戏差异更新—PC蛋蛋源码下载BSDiff算法解析

PC蛋蛋源码下载联系方式:QQ:2747044651 网址请添加链接描述----pi2502差异更新即在软件更新时只更新差异化的部分,以达到用最小的下载量完成软件的更新需求。该思想由来已久,从刚接触电脑时的操作系统、应用软件快速更新功能或填补漏洞,到迭代更加频繁的移动应用时代更多了节省下载流量费用的需求。尤其在移动游戏领域,随着手机性能的提升和玩家对游戏体验的追求,安装包亦是越来越大,并且会频繁的更新以不断给玩家带来更新的玩法和更为优化的体验。然而,这种频繁的更新也同样会带来负面的影响:更新包太大没流量;更新速度太慢错过了本该用来玩游戏的碎片时间;本地空间不足无法更新等问题,这些负面影响都会导致一定程度上的玩家流失。因此,差异化更新能力目前已成为各应用下载渠道的必备能力之一,更小的更新包才能提高更新的成功率。

差异化更新可分为两种,一种是基于源文件的差异化更新,该种方式成功率高, 算法简单,常用于平台相关的差异更新,但在移动端保存巨大的源文件、下载更新文件整合后再编译的方式显然是不现实的; 另一种即更为广泛使用的方法即对可执行文件的二进制更新方式,本文中即将就该方式下的经典算法BSDiff进行详细介绍。

普通二进制文件对比

熟悉Linux的同学提到二进制文件对比自然会想到一个命令:cmp。那可执行文件的二进制更新岂不是有了这个对比结果后, 然后拿更新结果修改旧文件的二进制串为新文件不就OK了?用个最简单的方法测试下,旧文件testDiffUpdate_Old与更新后文件testDiffUpdate_New内容仅差了第一个字符0。

xiaoyzhang$ cat testDiffUpdate_Old

123456789

xiaoyzhang$ cat testDiffUpdate_New

0123456789

通过CMP做两文件的对比后输出文件为testDiffUpdate_Delta,内容下:

xiaoyzhang$ cmp -l testDiffUpdate_New testDiffUpdate_Old > testDiffUpdate_Delta

cmp: EOF on testDiffUpdate_Old

xiaoyzhang$ cat testDiffUpdate_Delta

1 60 61

2 61 62PC蛋蛋源码下载联系方式:QQ:2747044651 网址【http://zhengtuwl.com

猜你喜欢

转载自blog.51cto.com/13930769/2161840
今日推荐