對為什么react需要時間分片,vue3不需要的淺學習

1、時間分片

時間分片指在讓應用在cpu進行大量計算時也能與用戶交互,但時間分片只能對大量cpu計算進行優化,無法優化復雜DOM操作,因為要確保用戶正在操作的界面是最新。

web卡頓的場景:

1、cpu計算量不大,但dom操作非常復雜(比如說你向頁面插入了十萬個節點)。這種場景下不管做不做時間分片,頁面都會很卡。

2、cpu計算量非常大。理論上時間分片在這種場景里會有較大收益,但是人機交互研究表明,除了動畫場景外,大部分用戶不會覺得 10 毫秒和 100 毫秒有很大區別。也就是說,時間分片只在 CPU 需要連續計算 100 毫秒以上的情況下才有較大收益。

2、react需要時間分片

React 16引入了Fiber重構,其目的是為了實現虛擬DOM的優先級級別和中斷重新開始的渲染過程,這被稱為“時間分片”。Fiber框架通過分層調度、暫停和重用執行樹的部分來提高其性能,這樣可以在瀏覽器有時間處理用戶交互或動畫的時候動態地調度工作。

Fiber的引入為React提供了以下優勢:

可中斷的渲染- 優先級渲染(比如,用戶交互比如滾動優先于動畫)- 可復用的渲染(比如,在使用用戶界面時可以在后臺繼續渲染其他部分)

這些優點使得React應用程序能夠更加高效地更新用戶界面,并且不會導致之前版本的“閃爍”問題。

解決方案:

React 16及以上版本會自動使用Fiber框架,無需用戶進行任何操作。如果你正在使用React 15或更早的版本,你需要升級到React 16或更高版本以獲得Fiber的好處

import React from 'react';
import ReactDOM from 'react-dom';class MyComponent extends React.Component {// ...render() {// 使用新的Fiber渲染算法渲染組件return (<div>{/* ... */}</div>);}
}ReactDOM.render(<MyComponent />, document.getElementById('root'));

在這個例子中,React 16使用Fiber重構實現了虛擬DOM的更新,使得用戶界面的渲染能夠被中斷和重新開始,從而提高了性能。

2.1關于Fiber框架學習。

參考:https://blog.51cto.com/u_11887782/5782954

3、vue3不需要時間分片

Vue 3 不需要時間分片(time slicing)主要是因為它的核心渲染機制和性能優化策略已經足夠高效,能夠在大多數情況下提供流暢的用戶體驗。以下是詳細的原因:

3.1、編譯器優化

Vue 3 引入了一個全新的編譯器,能夠生成更高效的渲染函數。這個編譯器在編譯過程中進行了一系列優化,例如:

  • 靜態提升:將不變的節點提升為常量,只在初次渲染時計算一次。
  • 預字符串化:將靜態內容直接轉化為字符串,減少了運行時的開銷。
  • 緩存事件處理程序:避免了不必要的重新綁定。

這些優化措施大大減少了 Vue 3 在更新 DOM 時的計算量,使得渲染過程更加高效。

3.2.、響應式系統的改進

Vue 3 使用了基于代理的響應式系統,替代了 Vue 2 中基于?Object.defineProperty?的實現。新的響應式系統更加高效,具備以下優點:

  • 精細的依賴追蹤:只追蹤實際使用的屬性,避免了不必要的依賴收集。
  • 懶惰計算:僅在需要時才計算依賴,減少了計算量。

這些改進使得 Vue 3 能夠更快速地響應數據變化,從而減少了渲染開銷。

3.3、虛擬 DOM 和 Diff 算法的優化

Vue 3 對虛擬 DOM 及其 diff 算法進行了優化,使得差異計算更加高效:

  • 靜態標記:編譯期間標記靜態節點,跳過不變的部分。
  • 塊級優化:將動態節點分塊,只對發生變化的塊進行更新。

這些優化措施減少了 DOM 更新的頻率和范圍,提高了整體渲染性能。

3.4、單次異步隊列

Vue 3 的更新機制基于單次異步隊列(single asynchronous queue),它確保在同一事件循環中只進行一次批量更新。這種方式減少了不必要的重復計算和 DOM 操作,使得更新過程更加高效。

3.5、自動批處理

Vue 3 實現了自動批處理機制,在同一個事件循環中對多次數據更新進行合并,從而減少了渲染次數。這種機制在避免頻繁重繪的同時,保證了界面的流暢性。

3.6、現代瀏覽器的性能

現代瀏覽器的性能已經得到了極大的提升,尤其是在處理 JavaScript 和 DOM 操作方面。Vue 3 的優化能夠充分利用這些性能改進,從而在絕大多數情況下不需要時間分片。

3.7總結

Vue 3 通過編譯器優化、響應式系統改進、虛擬 DOM 和 Diff 算法優化、單次異步隊列、自動批處理等技術手段,大幅提升了渲染效率和性能。再加上現代瀏覽器的性能提升,使得 Vue 3 能夠在大多數情況下提供流暢的用戶體驗,而無需借助時間分片等復雜的技術。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/44276.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/44276.shtml
英文地址,請注明出處:http://en.pswp.cn/web/44276.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

人工智能算法工程師(中級)課程1-Opencv視覺處理之基本操作與代碼詳解

大家好&#xff0c;我是微學AI&#xff0c;今天給大家介紹一下人工智能算法工程師(中級)課程1-Opencv視覺處理之基本操作與代碼詳解。OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一個開源的計算機視覺和機器學習軟件庫。它提供了各種視覺處理函數&am…

Redis為什么變慢了?一文講透如何排查Redis性能問題

Redis 作為優秀的內存數據庫&#xff0c;其擁有非常高的性能&#xff0c;單個實例的 OPS 能夠達到 10W 左右。但也正因此如此&#xff0c;當我們在使用 Redis 時&#xff0c;如果發現操作延遲變大的情況&#xff0c;就會與我們的預期不符。 你也許或多或少地&#xff0c;也遇到…

以太網中的各種幀結構

幀結構&#xff08;Ethernet Frame Structure&#xff09;介紹 以太網信號幀結構&#xff08;Ethernet Signal Frame Structure&#xff09;&#xff0c;有被稱為以太網幀結構&#xff0c;一般可以分為兩類 —— 數據幀和管理幀。 按照 IEEE 802.3&#xff0c;ISO/IEC8803-3 …

短視頻矩陣管理系統:如何提升內容質量,幫助企業獲客?

在數字化營銷蓬勃發展的今天&#xff0c;短視頻已成為企業推廣的重要陣地。然而&#xff0c;如何高效管理短視頻內容&#xff0c;提升內容質量&#xff0c;進而幫助企業精準獲客&#xff0c;成為企業亟待解決的問題。短視頻矩陣管理系統應運而生&#xff0c;以其強大的功能和靈…

TCP/IP協議超時重傳,以及應用層超時重傳一文詳解

很多人會有這樣的疑問 TCP/IP協議內置了超時重傳的功能&#xff0c;那為什么連接完全斷開或超時時&#xff0c;應用層代碼段還會進行重傳處理呢&#xff1f; TCP協議的重傳機制 客戶端 服務器| ||---- 數據段1 --…

編程范式之并發編程

目錄 前言1. 并發編程的定義2. 并發編程的特點2.1 任務交替執行2.2 狀態共享與同步2.3 并行執行 3. 并發編程的適用場景3.1 高性能計算3.2 I/O 密集型應用3.3 實時系統 4. 并發編程的優點4.1 提高資源利用率4.2 縮短響應時間4.3 提高系統吞吐量 5. 并發編程的缺點5.1 編程復雜性…

硬盤模式vmd怎么改ahci_電腦vmd改ahci模式詳細步驟

最近有很多網友問&#xff0c;我新買的電腦安裝原版win10或win11找不到驅動器呀&#xff0c;進入第三方pe又找不到硬盤&#xff0c;找到硬盤安裝后又出現安裝藍屏的情況&#xff0c;新機器怎么回事呀&#xff1f;這位網友內心有點崩潰&#xff0c;不知道啥原因。其實這些都是由…

初識c++(類與對象——上)

一、類的定義 1、類定義格式 ? class為定義類的關鍵字&#xff0c;Stack為類的名字&#xff0c;{}中為類的主體&#xff0c;注意類定義結束時后面分號不能省 略。類體中內容稱為類的成員&#xff1a;類中的變量稱為類的屬性或成員變量; 類中的函數稱為類的方法或 者成員函…

損失函數 - Transformer教程

在人工智能和深度學習的領域&#xff0c;Transformer模型已經成為了非常流行的選擇。而在Transformer模型的訓練過程中&#xff0c;損失函數扮演了至關重要的角色。今天&#xff0c;我們就來深入探討一下什么是損失函數&#xff0c;以及它在Transformer中的應用。 什么是損失函…

【Node.js安裝教程】

Node.js安裝教程 第一步&#xff1a;下載 下載鏈接&#xff1a;https://nodejs.org/zh-cn 第二步&#xff1a;安裝 **方法一&#xff1a;**建議安裝在默認路徑 方法二&#xff1a;如果不是默認安裝路徑可能會出現一系列問題&#xff1a;這時可以選擇卸載重裝或者配置環境變量…

kotlin數據類型

人不走空 &#x1f308;個人主頁&#xff1a;人不走空 &#x1f496;系列專欄&#xff1a;算法專題 ?詩詞歌賦&#xff1a;斯是陋室&#xff0c;惟吾德馨 Kotlin基本數值類型 基本數據類型包括 Byte、Short、Int、Long、Float、Double 整數類型 類型位寬最小值最大…

安卓微信8.0之后如何利用緩存找回的三天之前不可見的朋友圈圖片

安卓微信8.0之后如何利用緩存找回的三天之前不可見的朋友圈圖片 復習了下安卓程序的知識&#xff0c;我們會了解到&#xff0c;安卓程序清楚數據的時候有兩個選項 一個是清除全部數據一個是清除緩存。 清除全部數據表示清除應用數據緩存。 對于安卓微信8.0之后而言&#xff0…

OTP防重放攻擊

OTP本意是一次性口令&#xff0c;比如郵箱驗證碼&#xff0c;短信驗證碼&#xff0c;或者根據totp或者hotp生成的默認30秒一變的6位數字。 不過開發者要注意&#xff0c;必須要在驗證成功后失效那個驗證碼&#xff0c;不然就會導致重放攻擊。 對于郵箱驗證碼&#xff0c;服務器…

徹底開源,免費商用,上海AI實驗室把大模型門檻打下來

終于&#xff0c;業內迎來了首個全鏈條大模型開源體系。 大模型領域&#xff0c;有人探索前沿技術&#xff0c;有人在加速落地&#xff0c;也有人正在推動整個社區進步。 就在近日&#xff0c;AI 社區迎來首個統一的全鏈條貫穿的大模型開源體系。 雖然社區有LLaMA等影響力較大…

從 ArcMap 遷移到 ArcGIS Pro

許多 ArcMap 用戶正在因 ArcGIS Pro 所具有的現代 GIS 桌面工作流優勢而向其遷移。 ArcGIS Pro 與其余 ArcGIS 平臺緊密集成&#xff0c;使您可以更有效地共享和使用內容。 它還將 2D 和 3D 組合到一個應用程序中&#xff0c;使您可以在同一工程中使用多個地圖和多個布局。 Arc…

【C++雜貨鋪】C++11新特性

目錄 &#x1f308; 前言&#x1f308; &#x1f4c1; C11介紹 &#x1f4c1; 統一初始化列表 &#x1f4c1; 聲明 &#x1f4c2; auto &#x1f4c2; decltype &#x1f4c2; 返回類型后置 &#x1f4c2; 范圍for &#x1f4c2; 模板別名 &#x1f4c2; nullptr &#x1…

服務器使用PC作為代理訪問外網

1、PC上啟動代理&#xff0c;比如nginx 下載nginx&#xff1a;http://nginx.org/en/download.html 修改配置文件&#xff0c;在conf下&#xff1a; http {include mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;server…

六、 SpringBoot 配置?件 ★ ?

六、 SpringBoot 配置?件 本節?標1. 配置?件作?2. 配置?件快速??3. 配置?件的格式4. properties 配置?件說明4.1 properties 基本語法4.2 讀取配置?件4.3 properties 缺點分析 5. yml 配置?件說明5.1 yml 基本語法5.2 yml 使?進階5.2.1 yml 配置不同數據類型及 nul…

昇思25天學習打卡營第17天|文本解碼原理--以MindNLP為例

文本解碼就是根據當前已經輸入的內容不斷地預測下一個詞&#xff0c;前期通過大量的文本文章等輸入&#xff0c;讓模型學習好以后&#xff0c;根據已學習的內容&#xff0c;不斷預測下一個詞。就像鸚鵡學舌一樣你不斷的叫他說你好大帥哥&#xff0c;你好大帥哥。后面某一天&…

好用的源代碼加密軟件有哪些?5款源代碼防泄密軟件推薦

源代碼作為軟件產品的核心組成部分&#xff0c;其安全性直接關系到整個軟件系統的安全。源代碼的泄露可能導致企業的技術秘密暴露&#xff0c;商業競爭力下降&#xff0c;甚至可能引發經濟損失和法律責任問題。因此&#xff0c;對源代碼進行加密保護&#xff0c;已經成為企業不…