首页»版块 MagicOS MagicOS 【性能流畅共建第六期】一次升级,让应用更快、更稳、更 ...

【性能流畅共建第六期】一次升级,让应用更快、更稳、更聪明 —— 荣耀增量编译技术解读

[复制帖子标题和链接]

20936

性能_阿勇 荣耀工程师  发表于 2025-12-4 15:49:39 北京 来自:浏览器
本帖最后由 性能_阿勇 于 2025-12-4 16:10 编辑

    在智能手机中,编译引擎就像汽车的发动机,是支撑应用流畅运行的核心动力。应用要想在CPU上高速执行,必须先将 Java/Kotlin 字节码转换成机器可以直接运行的指令,而这个翻译过程正由编译系统完成。
【性能流畅共建第六期】一次升级,让应用更快、更稳、更聪明 —— 荣耀增量编译技术解读
     传统编译机制虽然能带来更快的运行速度,但也存在明显的成本:它耗时长、负载高、占资源多。而在某些场景下,例如安装应用、后台优化或系统升级,你可能会感到手机突然变慢变卡。这并不是错觉——往往是因为系统正在清理旧的编译结果并重新生成,导致一段时间内只能使用更慢的解释执行方式。
    为了让手机在更多场景下保持更稳定、更持续的流畅体验,荣耀引入了增量编译技术。通过更智能的方式处理编译流程,它让系统能够快速恢复性能,不再重复进行无效工作,让用户真正体验到升级后更快的使用感受。

    📌 为什么需要增量编译?
    空闲编译:效率太低,白白浪费性能机会
    应用在后台进行AOT优化时,系统需要在空闲 + 充电等苛刻条件下才能执行。更关键的是,每次只新增少量热点函数,却要把旧的编译文件全部删除、重新编译一遍。
    导致的结果就是:
  • 编译任务经常做一半被打断
  • 同一个应用可能需要等待很久才进入最佳性能状态
  • 系统能用的性能优化窗口被严重浪费
    OTA系统升级:应用性能会明显掉档
    很多用户升级系统后感觉应用变慢,是因为 Android 在系统升级后必须重新生成应用的编译结果。背后的原因是应用运行不仅依赖自身代码,还会调用大量系统 API 和底层库。系统升级时,这些库的接口和内部实现都有可能发生变化。旧版本系统生成的应用机器码在新系统上可能不再安全或完全兼容。
    为了确保稳定性,Android 的默认策略是:
  • OTA 后删除所有旧 AOT 编译产物
  • 让应用回退到解释执行模式
  • 在空闲、充电等条件满足时再重新编译
    由于后台编译受限于多重条件,恢复到 OTA 前的优化状态往往需要很长时间。在新的编译结果落盘前,应用只能以解释模式执行,性能显著下降,形成一段明显的性能真空期
    🚀 增量编译:更快、更省、更智能的编译方式
    荣耀与南京大学合作开发的增量编译技术,秉承核心理念——只有变化的部分才需要重新编译,不变的内容全部复用。基于这一思路,我们在两个关键场景上进行了系统级提升,显著提升了编译效率和开发体验,充分体现了产学研深度融合的成果。

    空闲场景:增量化处理,让后台编译更高效
    在后台优化应用时,系统不再像以往那样每次都从头编译,而是能够精准识别新增的热点函数,仅对必要的部分进行增量编译,并与现有的结果智能合并。
    首先,系统识别出新增的热点函数,然后通过 AOT 编译器进行增量编译,生成增量编译产物。这些增量编译产物与存量编译产物合并后,形成统一的内存表示。接着,这些编译产物被解析并合并,最终生成目标文件,形成完整的 oat 文件。
【性能流畅共建第六期】一次升级,让应用更快、更稳、更聪明 —— 荣耀增量编译技术解读
    得益于增量化处理,AOT 编译整体耗时缩短 63%。这意味着:相同的空闲时间,现在可以完成原本 2 倍数量的应用优化,应用更快恢复到最佳性能状态。这种方式让后台编译更加轻量、连贯,不仅更能利用碎片化的空闲时间,也更不容易因为系统调度而被频繁中断。
    系统升级场景:跨版本增量修复,让升级后不再变慢
    在系统 OTA 升级后,荣耀增量编译技术会自动分析新旧系统之间的差异,精准定位到真正受到影响的编译区域,并仅对这些部分进行高效修复,使绝大多数旧有编译结果能够在新系统中继续复用。
    首先,系统会对比升级前后的核心类库,统计字节码层面的差异,并同时对升级前后的 boot 镜像进行变更分析;随后,基于这些差异信息,系统会进一步统计底层依赖的变更范围。最终,系统据此对应用的旧版编译产物进行精准修复,生成可直接在新系统运行的新版编译结果。
【性能流畅共建第六期】一次升级,让应用更快、更稳、更聪明 —— 荣耀增量编译技术解读
    在这一场景下,增量修复让 AOT 编译耗时缩短 72%,从而能在相同时间内完成 过去 3 倍数量的应用编译,显著缩短升级后的性能恢复周期。对用户而言,这意味着系统升级后应用仍保持高性能运行,不再经历卡顿期,也不会出现升级后的性能断层。
评论6
zerin 版主  发表于 2025-12-4 18:18 辽宁 来自:荣耀GT Pro
好高级
HONOR2508098848215  LV6  发表于 2025-12-4 19:09 安徽 来自:荣耀400 Pro
什么时候下放,有没有说的真么大变化。

评论

这好像一直都有的  发表于 2025-12-6 10:36  江西
HONOR2508098848215  LV6  发表于 2025-12-6 16:00 安徽 来自:荣耀400 Pro
好的
和熙五路  LV7  发表于 2025-12-9 23:32 湖南 来自:荣耀Magic7
有没有考虑过出一个手动选择应用编译的模式,我发现有些应用系统编译不到即时晚上充一晚电的情况下,有很多app在应用市场更新后无法触发系统的编译
HONOR2212115113877  LV3  发表于 3-2 18:14:27 广东 来自:浏览器
这个功能,上线到了荣耀的哪款机器呢?
您需要登录后才可以评论 登录 | 立即注册
简体中文 - China
快速回复 返回顶部 返回列表