轻量开发、原生性能:RTS 一码多端新范式

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. 轻量开发、原生性能:RTS 一码多端新范式 主讲人:郝有峰 蚂蚁终端体验科技大会
2. 2019:设计小程序前端框架、Bridge 2022:基于 WASM 的区块链合约引擎 关于我 郝有峰 @ajihyf 字节跳动 - Cross Platform Languag UI 2023:自渲染引擎,自渲染端渲染混合排版 Graphics 2024:RTS 一码多端,Relax UI 框架
3. /01 Why RTS 一码多端 /02 如何 RTS 一码多端 /03 性能与落地收益
4. /01 Why RTS 一码多端 我们还需要跨端框架吗? 需要什么样的跨端框架?
5. 鸿蒙适配降本增效Vibe Coding 进一步提升多端对齐复杂度业务对客户端人效比有更高诉求bolt.new、Replit 均选用跨端框架生成客户端应用 跨端是减少复杂度、提高人效的有效手段
6. React NativeFlutterCompose Multiplatform • 基于 JavaScript 运行时• 基于 Dart AOT• Android 基于 JVM,采用端渲染,可 • 采用端渲染• 采用自渲染• 基于 JavaScript Interface Bridge 与 端通讯• 使用 DartFFI / MessageChannel 与 端通讯 与端无缝通讯 • iOS / 鸿蒙基于 Kotlin Native AOT, 采用自渲染,通过 OC / NAPI 桥接与 端通讯需
7. 跨端语 跨语言调用:FFI 与 GC 运 时 宿主语 运 数据结构数据结构 垃圾回收垃圾回收 时 • 跨端语言与宿主语言难以传递复杂容器数 据结构 • 数据传输存在序列化、反序列化或拷贝 • 不同堆对象之间互相持有,内存结构复杂 操作类型Kotlin -> OCSwift -> OC 空函数调用8862 ns/100op380 ns/100op 简单计算操作6859 ns/100op378 ns/100op 返回值处理4914 ns/100op378 ns/100op
8. 应用进程 LayerTree 渲染体系 Draw • 跨端语言+端渲染:大量 FFI • 跨端语言+自渲染 GPU 进程 Draw • 每个Surface W*H*4(*缓冲数) 内存占用 • 无法与系统共享字体、Shader 缓存, CompositiCompositi 自渲染/安卓端渲染iOS、鸿蒙端渲染 影响冷启速度 • 独立合成,动画受UI线程制约,无法利 用iOS、鸿蒙的合成器动画
9. RTS 语言 支持转译为为 Kotlin、Swift、ArkTS、JavaScript,无 FFI 高性能调用。 同时支持编译为字节码动态下发。 基于转译的新思路 Salamander 工程化 脚手架、开发、Typing、IDE工具链。 围绕语言、UI 框架、工程化体系, 我们打造了 RTS 一码多端方案。 Relax UI 框架 Signal 响应式 + JSX 语法,无 Di 点对点更新。 基于 Lynx 提供多平台一致的端渲染能力。
10. /02 如何 RTS 一码多端 如何同时拥有极致性能与开发体验
11. RTS:无缝转译
12. RTS 转译示例 kotlin Swift
13. RTS 核心语法能力 客户端能力RTS 能力 函数重载,泛型,闭包 class/重载,覆盖,泛型,抽象类 协程Promise, async/await 多线程SLThread 类型转换as, as?, as! 数据类型Json, 元组 序列化Serializable 容器类型Array, Map, Set…
14. 基础类型映射 RTS 类型Kotlin 类型Swift 类型ArkTS 类型TypeScript 类 型 int32IntInt32numbernumber int64LongInt64bigintbigint oat32FloatFloatnumbernumber oat64DoubleFloat64numbernumber ArrayKotlin.ArrayListNSMutableArrayArrayArray MapMap SetSet Map Set NSMutableDictionar Kotlin.MutableMap y MutableSet NSMutableSet
15. Kotlin / ArkTS / JavaScript 基于 GC,内存管理模型一致。 Swift RTS 内存管理 基于 ARC 引用计数。 提供 weak 关键字,由开发者解除循环引用。 RTS Swift
16. Salamander:一站式工具链
17. Swift 宿主接口调用 typing s RTS 可消费的 d.ts
18. sl dev Swift DTS 类型声明 Kotlin 生成 typings ArkTS 客户端已有代码 Import typings 客户端产物 静态编译 Swift 转译 RTS 工程 Kotlin ArkTS 编译 调试、动态发布 VM ByteCode
19. RelaxUI:极致轻、薄
20. 声明式开发范式 借鉴 React 语法,JSX 编译为指令式操作,逼近手写 CURD 代码性能。 基于 Modi er 的样式描述,无 CSS resolve 负担。
21. 编译渲染链路 Relax Compiler RTS Compiler Calls view Android View Render Style Use iOS UIKittext Layout Harmony CAPIImageEvent 客户端渲染LynxUIRelaxFramework
22. E ect 树代替组件树 render 永远只执行一次。 无组件、rerender 等概念,唯一的 运行时就是响应式图。
23. 高性能响应式算法 采用最先进的响应式算法,将节点之间的关系串联为链 表。 重计算时,无容器操作,无新增对象。 极大减少 GC 压力。 js-reactivity-benchmark 中超过 Solidjs 30%+。
24. RTS 管线,C++布局引擎 与端交互无 FFI。 采用 Lynx 高性能 C++ 布局引擎,与布局系统 采用紧凑数值编码 bu er 交互。
25. 端渲染+ atten 基于端渲染,在 iOS、鸿蒙上与端组件无缝混排。 Android 上还额外支持 atten 能力,能将多个层级的视 图扁平化到一个 view 中。
26. 开发体验
27. One IDE • 语法提示 • 在 RTS 中断点调试 Native 应用
28. Hot Reload 开发 • 开发阶段编译为字节码,秒级重载页面
29. 总结
30. • 无跨语言调用的 FFI、GC 问题。 极致性能 • 无缝使用客户端生态。 • 轻量、集成成本低。 • UI 框架无 Di ,接近指令式操作性能。
31. 业务迭代期 字节码动态发布模式,快速迭代。 动静兼顾的跨端形态 业务稳定期 静态编译模式,原生性能。
32. /03 性能与落地收益 性能收益与人效收益 让跨端成为客户端基建本身
33. Hello World(FMP) 52.5 SwiftUI Relax Native SwiftUI Native Relax 35 iOS 17.5 0 低端机 端机 Compose 50 37.5 Relax 25 Native Native Compose 12.5 0 低端机 端机 Relax Android
34. 大量色块 5250 3500 iOS SwiftUI 1750 Relax Native 0 Native 低端机 Relax 端机 Compose 1600 1200 800 Native 400 0 Android Relax Native 低端机 Compose 端机 Relax
35. 长列表 SwiftUI Relax 127.5 Native Relax Native 85 iOS 42.5 0 低端机 端机 Compose 300 Relax 225 Compose Native 150 Relax Native 75 0 低端机 端机 Android
36. 落地业务 客户端业务:抖音、头条、即梦、巨量引擎等 平均同构率70%,人效提升40%。
37. 跨端到客户端基建 • 新的跨端落地场景:基于 RTS 的多端一致性容器。 • 达到三端同构率约60%,提升人效31%。
38. Thanks

trang chủ - Wiki
Copyright © 2011-2025 iteam. Current version is 2.148.2. UTC+08:00, 2025-12-22 19:15
浙ICP备14020137号-1 $bản đồ khách truy cập$