当前端框架聊性能,聊的是同一个性能么?
SegmentFault
共 1814字,需浏览 4分钟
·
2021-08-30 09:39
Solid.js
作者Ryan Carniato
写了一篇《2020年JS框架性能对比》内含15张跑分表React
、Angular12
这样的业界知名框架。React
都这么拉跨啦?虚拟DOM到底慢不慢?
vanillajs
指原生JS,这也是众多框架毕生在追寻的目标。React
以及知名类React
框架Preact
排名倒数3、4,但同样作为类React
框架的inferno
排名却很靠前(第三名)。数组两端比较
查找最小移动次数
inferno
的虚拟DOM可能是业界同类解决方案中最高效的。diff
前后的数据分别为:// diff前
abcd
// diff后
abfd
ab
,相同后缀是d
。// diff前
c
// diff后
f
React
的Fiber
架构使用链表实现,无法进行两端比较细粒度更新yyds?
SolidJS:预编译 + 细粒度更新
Svelte:预编译 + 细粒度更新
Vue3:预编译 + 细粒度更新 + 虚拟DOM
React有这么不堪么?
React
又有什么性能优点呢?CPU
和网络的空闲时间,即Chrome DevTools
的lighthouse
工具中的TimeToConsistentlyInteractive
指标。Short Tasks
指向的都是耗时很短的JS
任务,短耗时意味着浏览器有更多空闲时间重排、重绘,更不易卡顿。Long Tasks
,指向的都是耗时很长的JS
任务,此时浏览器更容易卡顿。Vue2
中通过setter
、getter
Vue3
中通过proxy
CPU
及内存开销(虽然随着proxy
的普及,JS
原生支持响应式更新后,这部分开销会越来越低)。React
没有这部分开销,同时借由基于虚拟DOM的时间切片,React
能进一步降低持续的可交互时间。总结
细粒度更新对于局部更新性能更佳
基于虚拟DOM的时间切片对持续的可交互时间性能更佳
评论