RN 技術探索:Hermes Engine 初探
桔妹導讀:自從 Google 的 Flutter 釋出之後,Facebook 對 React-Native 的迭代開始快了起來,最佳化 React-Native 的效能表現,避免被 Flutter 比下去。最近一個比較大的動作是開源了一個 JavaScript 引擎,並將其包含到 React-Native 中。那麼這款引擎它有什麼不同,相比 V8、JSC 這些 JavaScript 引擎又有什麼優勢呢,現在本文來為你揭曉。
1.Hermes 引擎是什麼,優勢有哪些?
重要的事情提前說:Hermes 引擎是 Facebook 研發,在 React-Native Android 端用於替換 JavaScript Core 的 JavaScript 引擎。Hermes 引擎的優勢是適合移動端的輕量級 JavaScript 引擎,使用 aot 編譯,可以減少 Android 端記憶體使用,減小安裝包大小,提升執行效率。
2.什麼是 JavaScript 引擎?
JavaScript 引擎是一個專門處理 JavaScript 指令碼的虛擬機器,一般會附帶在網頁瀏覽器之中。
3.主流 JavaScript 引擎
V8(Google)、JavaScriptCore(Apple)、SpiderMonkey(Firefox)
4.RN 中的 JavaScript 引擎
Weex,Android:V8,iOS:JavaScriptCore
RN,Android:JavaScriptCore(Hermes、V8),iOS:JavaScriptCore(Apple 要求)
注:Hermes Engine在React-native 0.60.2 版本後支援
5.Hermes 的特色
預編譯位元組碼(引擎載入二進位制程式碼效率高於執行JS指令碼)
無 JIT 編譯器(減小了引擎大小,最佳化記憶體佔用,但直接執行 JS 指令碼的效能差於 V8 和 JSC)
針對移動端的垃圾回收策略
6.最佳化原理


7.已有專案接入 Hermes
升級 React-Native 及相關庫升級(成本較小)
因為 React-Native 0.60.x 變更為依賴 AndroidX,所以 Android 專案需要使用 28 以上版本編譯,適配 Android 高版本,且需要遷移到 AndroidX(成本較大)
修改 build.gradle,新增 Hermes 相關屬性及依賴(成本較小)
8.是否支援 CodePush?
釋出方式 | 是否支援 | 備註 |
9.除錯效率
10.ES 標準支援
11.效能調研
▍包大小分析






▍記憶體分析




▍TTI效能
React-Native Android 中主要是 Application onCreate 開始到 RN 元件渲染完成可互動的時間。


12.總結
本文作者 ▬ 王李坤 滴滴 | 高階軟體開發工程師 哲學程式設計師,是個氣管炎、偽學霸,主要研究移動端技術,目前負責終端技術的落地。相信“技術能夠改變世界”,喜歡學習新技術
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69908606/viewspace-2653574/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 加入阿里技術團隊三年,哪些習慣讓我在工作上持續受益?
- vSphere 7融合Kubernetes,構建現代化應用的平臺
- “刪庫跑路”這件事情真的發生了 ,還是技術總監乾的!
- 這波技術社群的程式設計師,技術視野有點堪憂!
- 馬化騰談 Facebook Libra 幣:不看技術看監管
- 滴滴全民拼車日背後的運維技術揭秘
- 跨越專業翻譯的語言之牆:百度翻譯的技術攀登
- 四種區塊鏈底層技術形態的對比解讀
- 技術分享| anyRTC音影片與微信小程式互通實踐
- 支援國產ETL etl-engine 用go寫的輕量級etl引擎 方便整合到各企業中
- 國產ETL etl-engine 視覺化 輕量級 跨平臺 支援動態解析GO語言指令碼
- “技術沙龍”來襲,邀您一同探討 Serverless 資料庫技術最佳實踐
- 技術分享 | SQL 最佳化:ICP 的缺陷
- 為什麼搞技術的很少有“暴發戶”?因為沒有“捷徑”,而且也很難“投機取巧”
- “聽完你的評價,我們決定拒絕這位明天入職的技術經理”
- 中國通訊協會:2022年自智網路前沿技術白皮書
- 海量資料下查詢慢、資料不一致難題如何解?看某遊戲公司的技術實踐