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

相关推荐
Queen_sy5 分钟前
vue3 el-date-picker 日期选择器校验规则-选择日期范围不能超过七天
javascript·vue.js·elementui
lvchaoq24 分钟前
react 修复403页面无法在首页跳转问题
前端·javascript·react.js
郝开28 分钟前
6. React useState基础使用:useState修改状态的规则;useState修改对象状态的规则
前端·javascript·react.js
Codigger官方1 小时前
Linux 基金会牵头成立 React 基金会:前端开源生态迎来里程碑式变革
linux·前端·react.js
90后的晨仔1 小时前
🌟 Vue3 + Element Plus 表格开发实战:从数据映射到 UI 优化的五大技巧
前端
ObjectX前端实验室2 小时前
【图形编辑器架构】🧠 Figma 风格智能选择工具实现原理【猜测】
前端·react.js
天桥下的卖艺者2 小时前
R语言基于shiny开发随机森林预测模型交互式 Web 应用程序(应用程序)
前端·随机森林·r语言·shiny
技术钱2 小时前
vue3 两份json数据对比不同的页面给于颜色标识
前端·vue.js·json
路很长OoO2 小时前
Flutter 插件开发实战:桥接原生 SDK
前端·flutter·harmonyos
技术钱2 小时前
react+andDesign+vite+ts从零搭建后台管理系统(三)-Layout布局
javascript·react.js·ecmascript