最新,Vue 性能提升 400%

最近,Vue 团队核心成员 Johnson Chu 开源一个全新的信号库:alien-signals,这是一个基于 Vue 3.4 响应式系统重写的研究型信号库,可以使 Vue 3.4 的响应式系统性能提升 400%。目前,alien-signals 是所有信号库中最快的实现。

优势

alien-signals 的优势如下:

  • 更低的内存使用:在大量创建 ref、computed 和 effect 实例时,alien-signals 的内存使用量减少了约 13%(从 2.3MB 降低到 2.0MB)。
  • 更高的性能:在各种性能测试中,alien-signals 均展现出了更为出色的性能。特别是在更新 ref 后读取大量 computed 属性的场景中,Vue 3.5 存在明显的性能瓶颈(这一特点在拉模型响应式系统中较为常见,具体可在 https://github.com/transitive-bullshit/js-reactivity-benchmark 中复现)。而 alien-signals 通过优化,成功解决了这一问题,实现了超过 30 倍的性能提升,且性能提升幅度与规模成正比。
  • 更好的代码抽象:先前的调度逻辑与外部实现(如 Dep 清理、调试事件处理、递归 effect 处理等)存在耦合问题。而在当前实现中,alien-signals 已成功消除了这些耦合,使得代码结构更为清晰,可维护性更强。

性能

实验结果表明,在既定约束下,即使不使用复杂的调度策略,信号库也能展现出优秀的性能。具体而言,在 0.2 版本中,alien-signals的整体性能表现突出:其性能约为 Vue 3.4 响应式系统的 400%;在常规场景下,相较于 Vue 3.5 响应式系统,其性能提升了 180%;而在大规模应用场景下,其性能更是 Vue 3.5 响应式系统的 6500%。

而在 alien-signals 0.3.0 中,其性能较 0.2.x 又提升了 5~15%。

alien-signals 设定了以下约束以确保响应式系统的高性能实现:

  • 不使用动态对象字段
  • 不使用 Array/Set/Map
  • 不使用递归调用
  • 类属性必须少于10个

状态

目前,alien-signals 已经用于 Vue Language 工具:

Johnson Chu 已经在 Vue 仓库中提了 PR,计划将 https://github.com/stackblitz/alien-signals/blob/master/src/system.ts 的代码移植到 https://github.com/vuejs/core/blob/main/packages/reactivity/src/effect.ts 中,以利用 alien-signals 的性能优势实现 Vue 响应式系统的性能提升。也许这些将会在 Vue 3.6 中实现?

相信未来 Vue 的响应式系统将是最快的!

相关推荐
逆袭的小黄鸭几秒前
深入剖析 JavaScript 执行上下文:代码运行的幕后机制
前端·javascript·面试
小old弟几秒前
闭包:从入门到“顿悟”的奇幻之旅
前端
晴殇i1 分钟前
抛弃 JavaScript 立即执行函数,这个方案更简洁更优雅
前端·javascript
码是生活2 分钟前
鸿蒙开发排坑:解决 resourceManager.getRawFileContent() 获取文件内容为空问题
前端·harmonyos
zoahxmy09293 分钟前
Vue3 视频播放与截图功能实现
javascript·vue.js
婷婷婷婷5 分钟前
v-copyText 自定义指令 —— 复制文本内容
前端
waylon111137 分钟前
【HOC】高阶组件在Vue老项目中的实战应用 - 模块任意排序
前端·vue.js·面试
阳阳羊8 分钟前
Mpx 动画
前端
编程社区管理员9 分钟前
「2025最新版React+Ant Design+Router+TailwindCss全栈攻略:从零到实战,打造高颜值企业级应用
前端·react.js·前端框架
DJA_CR9 分钟前
解决在 TSX 中使用 `RouterView` + `KeepAlive` 不生效问题
前端·vue.js