Vite 4.3 性能大幅提升!
近日,Vite 團隊核心成員“翠”在社交平臺表示,他在 Windows 機器上對 Vite 4.3 進行了基準測試,其初始加載速度有了大幅提升!其中,Vite 4.3 的冷啟動時間快了 3 倍,熱啟動時間也快了 1.3 倍。另外,在使用 SWC 插件時,Vite 4.3 的冷啟動時間比 turbopack 快 1.5 秒。截至發(fā)稿,Vite 4.3 處于 beta.4 階段。
在開始之前,先來介紹三個相關(guān)概念:
- 啟動時間:從“執(zhí)行命令”到“在瀏覽器中觸發(fā) load 事件”的時間。
- 根 HMR 時間:從“根文件被更改”到“該文件在瀏覽器中執(zhí)行”的時間。
- 葉子 HMR 時間:從“葉子文件被改變”到“該文件在瀏覽器中執(zhí)行”的時間。
接下來就看看 Vite 4.3 相較于上一個版本在速度上都有哪些提升!
測試概述
將 Farm、Webpack、Vite、Rspack 和 Turbopack 進行測試對比,運行十次并取平均值。這里使用 Turbopack 的基準案例(1000 個 React 組件),參考:https://turbo.build/pack/docs/benchmarks。得到的結(jié)果如下:
最終得到的結(jié)論如下:
- Vite(plugin-react) 的啟動時間只比 turbopack 慢 0.2s(冷啟動)
- Vite(plugin-react) 的啟動時間比 turbopack 快 0.2s(熱啟動)
- Vite(plugin-react-swc) 的啟動時間比 turbopack 快 1.5s(冷啟動)
- Vite(plugin-react-swc) 的啟動時間比 turbopack 快 1.8s(熱啟動)
- Vite 的葉 HMR 時間比 turbopack 快
- Vite 的根 HMR 時間比 turbopack 慢 5-10ms
- rspack 的啟動時間是 Vite 的一半,但 HMR 的啟動時間是 Vite 的 10 倍
進行本測試的機器規(guī)格和其他信息:
- 運行時:Node.js 18.15.0
- 中央處理器:銳龍 9 5900X
- 內(nèi)存:DDR4-3600 32GB
- 固態(tài)硬盤:WD Black SN750 NVME SSD
測試結(jié)果
對 Vite 4.3 beta.2 和 Vite 4.2.1 的啟動時間分別進行測試:
- Vite 4.2.1 + plugin-react 3.1.0 / plugin-react-swc 3.2.0。
- Vite 4.3.0-beta.2 + plugin-react 4.0.0-beta.0 / plugin-react-swc main。
對比結(jié)果如下圖所示:
根據(jù)圖表可知:
- plugin-react 的啟動時間:提升了 3.5 倍(冷)/ 1.3 倍(熱)
- plugin-react-swc 的啟動時間:提升了 4.4 倍(冷)/ 1.6 倍(熱)
對 Vite 4.3 beta.2 和 Vite 4.2.1 的熱更新時間進行對比測試:
根據(jù)圖表可知:
- plugin-react 的啟動時間:提升了 1.7 倍(根)/ 2.3 倍(葉子)
- plugin-react-swc 的啟動時間:提升了 1.3 倍(根)/ 1.7 倍(葉子)
將 Vite 4.3 beta.2 與其他構(gòu)建工具進行對比,得到的數(shù)據(jù)如下:
根據(jù)上表中的數(shù)據(jù)得到圖表如下所示:
- 啟動時間:
- 熱更新時間:
除此之外,測試前后的 FCP(First Contentful Paint,即首次有內(nèi)容渲染的時間) 對比如下:
- ?Vite 4.2.1 + plugin-react 3.1.0
- FCP 最大值:70334
- FCP 最小值:33901
- FCP 平均值:38031
2.Vite 4.3.0-beta.2 + plugin-react 4.0.0-beta.0
3.FCP最大值:3348
4.FCP 最低:2970
5.FCP 平均值:3083
可以看到,Vite 4.3 比 Vite 4.2.1 的 FCP 平均快了 12 倍!
半年前,Vercel 推出了下一代打包工具:Turbopack,并宣稱其比 Vite 快 10 倍。如今,Vite 在某些方面已經(jīng)超越了 Turbopack,期待未來 Vite 會有更好的表現(xiàn)!?
參考資料:
- https://twitter.com/patak_dev/status/1644665027188670465。
- https://gist.github.com/sapphi-red/db27f9c18ed31894e409224051119e1b。