性能优化手段与实战思路(基于源码)
1. 运行时语义优化:事件循环原子化更新
依据:RuntimeScheduler 文档与 RFC0744。
价值:
- 减少 UI 中间态闪烁
- 降低 layout/effect 时序不确定性
- 让调度优化有明确边界(tick)
2. 引擎优化:Hermes 字节码与 sourcemap 链路
依据:BundleHermesCTask.kt、react-native-xcode.sh。
价值:
- Release 产物可直接加载字节码
- sourcemap 在 packager + compiler 双阶段保持可追踪
3. 构建优化:Autolinking 缓存
依据:ReactSettingsExtension.kt。
手段:
- lockfile + 配置文件 SHA 缓存
- 仅在配置变化时重跑
cli config
价值:减少配置阶段 IO 与子进程开销,加快本地/CI 构建。
4. 生成优化:Codegen 按需与跳过策略
依据:generate-artifacts-executor/index.js。
手段:
includesGeneratedCode时避免重复生成- 按平台拆分产物目录
- 清理空目录降低噪声
5. 二进制分发优化:iOS 预编译 + VFS Overlay
依据:scripts/ios-prebuild/__docs__/README.md。
手段:
- 预编译 XCFramework
- 用 VFS overlay 解决头文件布局兼容
价值:
- 降低业务侧从源码全编译的开销
- 保持对历史 import 语法兼容
6. 构建产物优化:资源压缩策略与 noCompress
依据:ReactPlugin.kt 的资源配置。
手段:
- 对 bundle 文件扩展名配置
noCompress(在特定场景避免重复压缩)
价值:平衡包体与运行时解压成本。
7. 可说的“优化框架”
把 RN 优化分成四层:
- 语义层:调度/事件循环(正确性 + 性能)
- 引擎层:Hermes(执行与加载效率)
- 构建层:codegen/autolinking/缓存(工程效率)
- 分发层:预编译与产物组织(交付效率)