Facebook發布了愛馬仕JavaScript引擎的源代碼

愛馬仕

Facebook已經開放了輕量級Hermes JavaScript引擎的源代碼, 針對在Android平台上運行基於React Native框架的應用程序進行了優化。

Facebook軟件工程師 Marc Horowitz在俄勒岡州波特蘭舉行的2019 Chain React會議上揭示了新的JavaScript引擎。 Hermes是一個新的開發人員工具,致力於以Facebook已經為其應用程序所做的相同方式來提高應用程序的啟動性能,並使應用程序在入門級智能手機上更有效。

關於愛馬仕

從今天的0.60.2版本開始,React Native內置了Hermes支持。 該項目因解決了本機JavaScript應用程序啟動時間長和資源消耗大的問題而得到認可。 該代碼是用C ++編寫的,並根據MIT許可進行分發。

使用愛馬仕的優點中,減少了應用程序的啟動時間,減少了內存消耗,減小了應用程序的大小。

加速應用 發射 通過在字節碼中使用預編譯來實現 在編譯階段緊湊高效。

為了直接運行該應用程序,將虛擬機與作為項目一部分開發的SemiSpace垃圾收集器一起使用。 使用V8,最長的步驟是解析源代碼並即時對其進行編譯。

Hermes引擎將這些階段帶到了編譯階段,並允許以優化的字節碼形式交付應用程序。

JavaScript處理分為幾個階段。 最初,將基於SSA表示(靜態唯一分配)來解析源代碼並生成中間代碼表示(Hermes IR)。

此外,中間表示在優化器中進行處理,該優化器使用主動靜態優化技術將主要中間代碼轉換為更有效的中間表示,同時保留原始程序的語義。

最終,在最後一個階段中,將生成已註冊虛擬機的字節碼。

在演示中,馬克·霍洛維茨(Marc Horowitz)展示了帶有愛馬仕(Hermes)的React Native應用程序 與未安裝Hermes的同一應用程序相比,它的完全加載速度快了大約兩秒鐘。

馬克·霍洛維茨(Marc Horowitz)確保愛馬仕(Hermes)也減小了APK的大小 到React Native存儲應用程序41MB的中間位置,並消除了該應用程序四分之一的內存使用量。

換句話說,借助愛馬仕,開發人員可以使用戶與障礙更少的應用程序進行更快的交互,例如下載速度慢以及由於多個應用程序共享有限的內存資源而造成的限制,例如:特別是在水平電話輸入上。

該引擎支持ECMAScript 2015 JavaScript標準的一部分(最終目標是完全支持),並且與大多數現有的React Native應用程序兼容。 在Hermes中,決定不支持對eval(),“ with”表達式,反射(Reflect和Proxy),Intl API API和某些RegExp標誌進行局部轉換。

要在React Native應用程序中啟用Hermes,只需將“ enableHermes:true”選項添加到項目中。 也可以在CLI界面模式下編譯Hermes,這使您可以從命令行執行任意JavaScript文件。

同時 Facebook不打算將Hermes改用於Node.js和其他解決方案,而只專注於移動應用程序 (在基於React Native的移動應用程序的上下文中,編譯AOT而不是JIT更為理想)。

微軟進行了初步性能測試,結果表明,使用愛馬仕(Hermes)時,Microsoft Office for Android應用程序可以在1.1秒內工作。

啟動後,它將消耗21.5MB的RAM,而使用V8引擎時,啟動將花費1.4秒,而內存消耗為30MB。


發表您的評論

您的電子郵件地址將不會被發表。 必填字段標有 *

*

*

  1. 負責數據:MiguelÁngelGatón
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。