當(dāng)前端框架聊性能,聊的是同一個(gè)性能么?

Solid.js作者Ryan Carniato寫了一篇《2020年JS框架性能對(duì)比》內(nèi)含15張跑分表React、Angular12這樣的業(yè)界知名框架。React都這么拉跨啦?
虛擬DOM到底慢不慢?

vanillajs指原生JS,這也是眾多框架畢生在追尋的目標(biāo)。React以及知名類React框架Preact排名倒數(shù)3、4,但同樣作為類React框架的inferno排名卻很靠前(第三名)。數(shù)組兩端比較
查找最小移動(dòng)次數(shù)
inferno的虛擬DOM可能是業(yè)界同類解決方案中最高效的。
diff前后的數(shù)據(jù)分別為:// diff前
abcd
// diff后
abfd
ab,相同后綴是d。// diff前
c
// diff后
f
React的Fiber架構(gòu)使用鏈表實(shí)現(xiàn),無法進(jìn)行兩端比較細(xì)粒度更新yyds?

SolidJS:預(yù)編譯 + 細(xì)粒度更新
Svelte:預(yù)編譯 + 細(xì)粒度更新
Vue3:預(yù)編譯 + 細(xì)粒度更新 + 虛擬DOM

React有這么不堪么?
React又有什么性能優(yōu)點(diǎn)呢?CPU和網(wǎng)絡(luò)的空閑時(shí)間,即Chrome DevTools的lighthouse工具中的TimeToConsistentlyInteractive指標(biāo)。
Short Tasks指向的都是耗時(shí)很短的JS任務(wù),短耗時(shí)意味著瀏覽器有更多空閑時(shí)間重排、重繪,更不易卡頓。Long Tasks,指向的都是耗時(shí)很長(zhǎng)的JS任務(wù),此時(shí)瀏覽器更容易卡頓。Vue2中通過setter、getterVue3中通過proxy
CPU及內(nèi)存開銷(雖然隨著proxy的普及,JS原生支持響應(yīng)式更新后,這部分開銷會(huì)越來越低)。
React沒有這部分開銷,同時(shí)借由基于虛擬DOM的時(shí)間切片,React能進(jìn)一步降低持續(xù)的可交互時(shí)間。總結(jié)
細(xì)粒度更新對(duì)于局部更新性能更佳
基于虛擬DOM的時(shí)間切片對(duì)持續(xù)的可交互時(shí)間性能更佳

評(píng)論
圖片
表情
