6月13日,华为HDC大会语言分论坛迎来爱奇艺助理研究员潘万坤的深度分享。围绕"仓颉在鸿蒙应用——爱奇艺应用开发实践"这一议题,潘万坤展示了爱奇艺如何借助仓颉语言的并发性能与跨语言互操作能力,自研高性能图片加载库,攻克AVIF格式支持、密集型任务并发处理等鸿蒙化核心难题,实现加载耗时降低与用户体验全面升级。
分享嘉宾:潘万坤|爱奇艺助理研究员

爱奇艺作为以视频、图文内容为核心的流媒体平台,对图片加载体验有着极致追求。在鸿蒙化进程中,团队首先面临的是AVIF格式支持的刚需:爱奇艺线上图片资源已广泛采用AVIF格式,其在与JPEG视觉质量相当时可节省约40%-50%的文件大小,相比WebP还可进一步减少约30%。然而,当前鸿蒙系统自带的image组件尚未支持AVIF格式,开发者无法直接加载,必须借助自研解码库实现支持。
与此同时,图片库本身具有密集型任务特性:频繁的网络请求与磁盘I/O考验并发与缓存机制;高计算量和内存占用的解码过程直接影响界面流畅度;缩放、裁剪、滤镜等图片处理操作属于高频耗时任务,对CPU/GPU资源敏感。
团队最初基于ArkTS开发,但很快遇到瓶颈:多线程模型使用成本高。ArkTS作为单线程语言模型,处理复杂计算任务易引发卡顿;Worker内存隔离、参数传递复杂,TaskPool数量和执行时间受限,开发者需频繁权衡任务类型,难以高效应对图片库的高并发场景。
潘万坤团队最终选择以仓颉语言重构图片库,正是看中了其在并发、性能、互操作和UI集成上的综合优势:
1、轻松并发:用户态线程模型
仓颉采用轻量级用户态线程模型,线程拥有独立上下文却能共享内存空间,兼顾隔离与高效。编译器与运行时对并发任务进行专项优化,结合轻量线程和并发对象库,实现更佳的资源管理与调度效率。开发者可轻松编写复杂并发逻辑,无需深入底层线程细节,大幅降低多线程使用成本。
2、卓越性能:Benchmarks Game领先
仓颉通过值类型、多层级静态分析优化和超轻量运行时,在计算机语言基准测试Benchmarks Game上相比业界同类语言取得明显性能优势。核心机制包括:静态编译优化、值类型优化、全并发整理GC、轻量化运行时。
3、 跨语言互操作:C / ArkTS 无缝集成
仓颉提供强大的跨语言互操作能力,支持与C语言和ArkTS的无缝集成,使开发者能够充分利用现有的C语言库和ArkTS组件,同时保持仓颉语言的高效性和安全性。
4、全面支持ArkUI组件
仓颉可直接在代码中使用和扩展ArkUI组件,实现业务逻辑到UI渲染的全流程打通,减少跨语言调用开销,内存占用更低。
1、AI辅助代码迁移,人力成本降低60%+
在华为团队的协助下,爱奇艺借助AI大模型工具进行代码迁移,自动将ArkTS代码转为仓颉,实现业务逻辑的快速迁移。AI工具自动识别类型差异、优化内存管理、提升代码执行效率,大幅减少手动迁移工作量,节省人力成本60%以上。
2、三级缓存 + 子线程并发解码架构
潘万坤展示了仓颉图片库的核心架构:主线程发起图片加载请求,通过spawn创建子线程处理密集型任务,构建三级缓存体系(内存缓存→磁盘缓存→网络请求),在子线程中完成解码(静图解码输出PixelMap、动图解码进行帧管理),最终通过launch将Image嵌入ArkUI组件完成渲染。
3、ArkUI组件无缝嵌入
仓颉图片库通过CustomLib机制实现与ArkUI的深度集成。在ArkTS侧通过requireCJLib加载仓颉动态库,创建QYCJImageNode继承NodeController;在仓颉侧通过ViewStackProcessor分配组件ID、创建CJImage组件并接入自定义视图系统,实现从仓颉逻辑到ArkUI渲染的零损耗衔接。
4、内存优化:多层统一治理,解决晚释与早释
针对图片库的高内存占用特性,团队构建了一体化内存治理策略:
多层内存统一治理:覆盖libheif解码层、PixelMap图像层、仓颉运行时三层;
及时回收:离屏、滑走、任务取消即释放,避免不可见占用;
避免误释:校验展示状态、缓存一致性、引用计数,防止画面闪烁或白屏;
同时解决晚释(泄漏/峰值高)与早释(误释放)两类问题。
5、动图解码优化
针对动图场景,团队设计了按帧串行处理锁,确保帧顺序防止画面错乱;通过同步机制保证解码后的帧数据正确、及时传递至渲染线程;配合任务队列管理高效调度多个解码任务,避免线程阻塞,提升并发处理能力。
6、更多性能优化细节
通过互操作回调实现ArkTS生命周期事件(如aboutToReuse、aboutToRecycle)与仓颉端的衔接;
基于memcpy高效完成C侧解析buffer的内存复制与传递;
利用仓颉标准库优化网络请求与文件操作性能;
减少线程切换,内存缓存等场景直接在主线程完成处理。
经过仓颉重构后,爱奇艺鸿蒙应用的图片加载体验实现显著提升:
| |
|---|
| 加载耗时降低 | 子线程并发解码 + 三级缓存,图片加载速度大幅提升 |
| 自定义程度提升 | 自研图片库支持AVIF等格式,不再受系统组件能力限制 |
| 用户体验提升 | |
潘万坤表示,爱奇艺团队将借助仓颉语言的高性能与并发特性,持续完善图片库的解码、渲染与内存优化能力。同时,利用仓颉的跨平台优势,将图片库能力拓展至更多终端与平台,实现一次开发、多端复用。最后,潘万坤特别感谢了仓颉技术团队在技术探索与实践中的指导和大力支持。
潘万坤的分享为鸿蒙生态下的高性能图片加载提供了经过大规模业务验证的实战方案。从ArkTS的并发瓶颈到仓颉的用户态线程模型,从系统组件不支持AVIF到自研解码库的全面替代,爱奇艺的实践表明:当仓颉语言的并发性能、跨语言互操作与AI辅助迁移形成闭环时,鸿蒙原生应用的图片加载体验可以实现从"可用"到"极致"的跨越。这一方案不仅解决了爱奇艺自身的业务痛点,更为鸿蒙生态中所有对图片体验有高要求的应用提供了可复用的技术路径。
本场分论坛的完整回放将于近期在官方视频号放出,敬请关注,不错过每一个技术细节。
(本文技术数据与案例均来自嘉宾现场分享,最终解释权归爱奇艺所有。)