最新,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 的响应式系统将是最快的!

相关推荐
灵感__idea43 分钟前
JavaScript高级程序设计(第5版):好的编程就是掌控感
前端·javascript·程序员
烛阴2 小时前
Mix
前端·webgl
代码续发2 小时前
前端组件梳理
前端
试图让你心动3 小时前
原生input添加删除图标类似vue里面移入显示删除[jquery]
前端·vue.js·jquery
_Kayo_3 小时前
VUE2 学习笔记6 vue数据监测原理
vue.js·笔记·学习
陈不知代码3 小时前
uniapp创建vue3+ts+pinia+sass项目
前端·uni-app·sass
小王码农记3 小时前
sass中@mixin与 @include
前端·sass
陈琦鹏3 小时前
轻松管理 WebSocket 连接!easy-websocket-client
前端·vue.js·websocket
hui函数4 小时前
掌握JavaScript函数封装与作用域
前端·javascript
行板Andante4 小时前
前端设计中如何在鼠标悬浮时同步修改块内样式
前端