高德车载导航的差分更新优化实践

简介: 本文小结了高德车载导航在版本自更新演进过程中二进制差分解决方案的性能优化实践。

导读
随着车载设备联网化,越来越多的车载设备从离线走到了线上。高德车载导航也早已从过去的离线安装包更新演进到了在线迭代更新。但原车载设备的Android硬件配置远低于手机,主要表现在处理器主频低、内存和存储空间有限,导致车载导航在车机上会出现无法下载新版本数据包、更新过程耗时长导致卡顿的情况,对导航应用的性能提出了要求。

为提高用户体验,高德技术团队立项解决了该问题。本文小结了高德车载导航在版本自更新演进过程中二进制差分解决方案的性能优化实践。

差分更新方案比较

对于应用程序的版本更新迭代,除了分发全量的安装包,还有一种更低成本的方式是分发增量包,即通过下发前后两个版本的差异部分(这个过程下面简称Diff),然后在客户端对原版本进行补丁更新(这个过程下面简称Patch)。因此也叫差分更新。

业内比较流行的差分方案主要有: bsdiff、Xdelta3和Courgette。最后一个方案Courgette来自于谷歌,主要解决的是可执行文件的差分,而导航更新资源不仅包含可执行文件,还包含了图片等各种资源文件。所以,我们主要对比bsdiff和Xdelta3方案。

bsdiff和Xdelta3方案比较

下面是我们对选取的几个文件做的bsdiff和Xdelta3差分性能对比:

许斌1.png


bsdiff的优势是压缩比高,生成的差分文件非常小,但Patch过程耗时。而Xdelta3的优势是Patch过程耗时极短,但内存消耗非常大。

相比高德车载导航自身运行内存开销不足100MB的情况,Xdelta3的Patch内存消耗无法接受。因此我们选用了bsdiff作为自更新方案。

原生bsdiff方案缺陷与改进

原生bsdiff方案使得压缩比问题得到解决,但在车载导航自更新中还存在下面两个缺陷:

  • 内存消耗大,整个过程会占用10~35MB左右的内存。
  • 耗时长,整个包更新时间在3分钟左右。

在对bsdiff的优化探索中我们发现Chromium开源项目中存在一份基于bsdiff的优化版本。该版本将bsidff的默认sufsort算法替换成了divsufsort算法,在Patch时间上有了较大的提升。

许斌2.png

许斌3.png

使用Chromium版本的bsdiff, 高德车载导航的自更新性能如下:

  • 内存消耗在10~20MB。
  • 整个Patch过程耗时仍然长达25秒左右。

耗时依然很长。

由于Patch过程是一个CPU密集型的操作,且车载设备CPU的性能普遍不足,这意味着在整个升级过程中用户能明显感受到导航的操作卡顿。同时,更新时间越长意味着遭遇断电的可能性也越大。

基于以上分析,我们决定对Chromium版本的bsdiff进行CPU和内存上的性能优化。

bsdiff在车载自更新业务中的性能优化实践

在车载自更新业务上,我们设定的目标是整体更新时间小于6秒,且内存开销小于2MB。整个优化的过程就是围绕时间和空间的取舍。

内存优化方案

经过对bsdiff源码的分析,其Patch内存主要开销来自文件内容在内存中的读写暂存和Bzip2的解压开销。通过调整Bzip2参数可以降低部分内存,但无法达到期望。而文件读写的内存占用主要来自于其在内存中的暂存。

基于bsdiff差分Patch包的文件格式,我们增加了滑动窗口缓冲区的Patch特性,使其在文件的流式处理上能够有更好的内存消耗可控性。每次读取和写入指定的滑动窗口大小数据,使数据即来即走。

算法优化方案

经过上述的优化后,Patch过程的主要性能瓶颈在于Bzip2的解压算法中,即使调整Bzip2参数也无法减少本身的计算量。

许斌4.png


bsdiff差分算法的一个特性就是差分出的Patch数据包含了大量连续的01冗余数据,而Bzip2算法的优点就是对这类数据可以做到高度的压缩,这也是bsdiff压缩比高的原因。不过现在是目前的瓶颈。

此外,我们会制作软件整体的压缩差分包(即生成tar.bz2或zip格式文件),也就是说针对每个Bzip2压缩后的差分文件还要再经过一次压缩归档。这也意味着在客户段要进行两次的解压。

替换压缩算法

类似的冗余压缩算法有RLE(Run-length encoding),这个算法也是Bzip2算法的第一步。简单来说RLE算法就是针对连续多个冗余字节去掉其冗余字节,仅保留冗余的长度信息。这个算法相对更简单。

因此,我们将Bzip2压缩算法替换成了RLE算法,实际结果发现生成的Patch文件很大, 压缩比很低。但是可以通过再次压缩归档制作一次差分包,就可以达到和Bzip2几乎相同的压缩比效果。唯一的不足就是在客户端解压后会占用多一些磁盘空间, 而这个代价相对廉价多了。

优化性能对比

经过上述整体优化后,性能对比如下:

许斌5.png

经过内存优化后的方案空间复杂度将为了O(1)。

许斌6.png

上面的耗时差异在ARM车机会更明显:

许斌7.png


最终优化收益:内存消耗控制在2MB以内,整体Patch更新耗时3~5秒。

小结
通过对bsdiff的优化,高德车载导航在自更新性能上取得了较大收益。大幅缩短了用户下载和更新时间,降低了对ARM车机的硬件资源要求。为推动车载导航OTA更新提供了技术基础,对未来高德车载导航在分发新功能、新业务上铺平了道路。

相关文章
|
2月前
|
算法 物联网 定位技术
基于BLE的商业综合体室内定位导航系统:低功耗室内导航与反向寻车
本文介绍了基于BLE技术的商场室内定位导航系统,涵盖系统设计思路、关键技术实现及实际应用效果。系统通过部署BLE信标和利用智能手机等设备,实现精准室内定位与导航,提升消费者购物体验。关键技术包括iBeacon蓝牙定位和A*寻路算法,应用于商场导航、AR实景导航及反向寻车等功能。
62 4
|
2月前
|
人工智能 安全 物联网
园区导航如何实现?GPS与蓝牙定位技术精准导航
园区导航系统融合了大数据、人工智能和物联网技术,实现了室内外无缝切换和精准定位,提供智能路径规划、全方位服务信息和安全保障,提升了园区管理效率和用户体验。
66 0
|
4月前
|
人工智能 自然语言处理 搜索推荐
博物馆地图导览系统:GIS与蓝牙定位技术实现地图导览与语音解说功能
维小帮博物馆地图导览系统结合GIS地图、蓝牙定位及智能语音解说,为访客提供沉浸式导览。系统采用自研地图引擎,精准构建三维模型,支持路径规划与个性化定制。蓝牙技术实现高精度室内定位及自动触发语音解说功能,无需手动操作。系统还支持多语言解说与AI语音生成,提升参观体验。目前已在多个博物馆应用并获好评。期待与您共同推进文化科技的融合发展!
140 3
|
4月前
|
监控 安全 算法
室内定位导航技术:数字化时代的智能寻路解决方案
室内定位导航技术融合Wi-Fi、蓝牙信标及超宽带等技术,克服了GPS在室内的局限性。蓝牙信标作为关键组件,通过信号强度分析估算距离,结合三角定位算法确定位置。该技术不仅部署简便、成本低,还能提供准确稳定的定位服务。应用场景包括商场导航、医院科室指引、厂区资产管理、园区安全监控以及智能停车场等,极大提升了用户体验和管理效率。
176 0
室内定位导航技术:数字化时代的智能寻路解决方案
|
6月前
|
算法 搜索推荐 物联网
基于iBeacon蓝牙定位技术的反向寻车系统:打造高效智能的停车场导航体验
**基于iBeacon的反向寻车系统利用蓝牙信标实现停车场内车辆精确定位。车主停车时绑定手机,通过APP迅速导航至车辆。系统关键组件包括iBeacon硬件部署、数据处理与用户界面设计,采用高精度定位算法、实时数据处理和智能路径规划。随着技术发展,该系统有望在更多公共场所提升停车体验。**
217 1
基于iBeacon蓝牙定位技术的反向寻车系统:打造高效智能的停车场导航体验
|
6月前
|
算法 物联网 定位技术
iBeacon蓝牙定位赋能AR技术,重塑室内导航空间体验
iBeacon技术与AR结合,革新室内导航,解决传统技术在室内的局限。利用蓝牙BLE信号,iBeacon实现无需配对的精准定位,通过RSSI和算法计算用户位置。AR界面提供直观导航,适用于商场导购、博物馆导览、停车场寻车和景区导游等场景,实现高精度、实时、低能耗且互动的导航体验。未来,这一技术有望在智能生活领域发挥更大作用。
265 0
iBeacon蓝牙定位赋能AR技术,重塑室内导航空间体验
|
存储 监控 安全
工业互联网高精度位置信息平台源码
系统功能: 实时位置:查看并存储覆盖范围内人员、车辆、物资的实时位置及分布情况,实时监测、灵活查询指定人员位置信息。 轨迹回放:显示指定人员的历史活动轨迹,根据人员、区域、时间段等灵活筛选回放。 智能考勤:自定义考勤区域和部门考勤班次,自动判断迟到、早退;自动生成考勤报表,记录上下班时间和在岗时间。 电子围栏:自定义围栏区域,灵活设置围栏规则权限,非法入侵自动报警。
|
监控 安全 物联网
基于定位技术+智能算法实现的超宽带室内定位系统源码
可实时查看现场人员、车辆的位置信息及状态,并通过2D或3D地图呈现;点击地图中的定位标记可查看人员、车辆的详细信息;系统支持地图的缩放和多地图切换模式,能够实现地图与监控画面之间的切换。
125 0
|
传感器 物联网 开发者
5_2_1_光照信息屏_ 实验技术点及应用场景介绍|学习笔记
快速学习5_2_1_光照信息屏_实验技术点及应用场景介绍。
181 0
5_2_1_光照信息屏_ 实验技术点及应用场景介绍|学习笔记
|
传感器 自动驾驶 算法
SLAM:SLAM(即时定位与地图构建)的简介、发展、案例应用之详细攻略
SLAM:SLAM(即时定位与地图构建)的简介、发展、案例应用之详细攻略