<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          PrepackJavaScript 代碼優(yōu)化工具

          聯(lián)合創(chuàng)作 · 2023-10-02 02:56

          溫馨提示:該項目除了使用 BSD 協(xié)議授權(quán)外,還需遵守附加的專利授權(quán)。

          官方宣稱Prepack是一個優(yōu)化JavaScript源代碼的工具,實際上它是一個JavaScript的部分求值器(Partial Evaluator),可在編譯時執(zhí)行原本在運行時的計算過程,并通過重寫JavaScript代碼來提高其執(zhí)行效率。Prepack用簡單的賦值序列來等效替換JavaScript代碼包中的全局代碼,從而消除了中間計算過程以及對象分配的操作。對于重初始化的代碼,Prepack可以有效緩存JavaScript解析的結(jié)果,優(yōu)化效果最佳。

          官方提供的Prepack優(yōu)化示例:

          /* Hello World */// Input(function () {
            function hello() { return 'hello'; }
            function world() { return 'world'; }
            global.s = hello() + ' ' + world();
          })();// Output(function () {
            s = "hello world";
          })();

          Prepack團隊對未來的規(guī)劃如下:

          短期
          • 穩(wěn)定現(xiàn)有功能集,用于預(yù)優(yōu)化(Prepack)React Native代碼包

          • 集成React Native工具鏈

          • 根據(jù)React Native所用模塊系統(tǒng)的假設(shè)來構(gòu)建優(yōu)化

          中期
          • 進一步優(yōu)化序列化(Serialization),包括:消除不暴露特性(identity)的對象;消除未使用的導(dǎo)出屬性,等等

          • 預(yù)優(yōu)化每個函數(shù)、基本代碼塊、語句、表達式

          • 與ES6保持完全一致

          • 支持廣泛的模塊系統(tǒng)

          • 假設(shè)ES6支持某些功能,延遲完成或直接忽略Polyfill應(yīng)用

          • 進一步實現(xiàn)Web和Node.js環(huán)境中的兼容性目標

          • 深入集成JavaScript虛擬機,改進堆反序列化過程,包括 :暴露“對象懶初始化”的概念 - 以一種JavaScript無感知的方式,在首次使用對象時對其進行初始化;通過專門的字節(jié)碼提高普通對象創(chuàng)建的編碼效率;將代碼分為兩個階段:1) 非環(huán)境依賴階段,虛擬機可以安全地捕獲并恢復(fù)生成的堆;2)環(huán)境依賴階段,通過從環(huán)境中獲得的值執(zhí)行所有剩余的計算過程來拼湊具體的堆,等等

          • 總結(jié)循環(huán)和遞歸

          長期 - 利用Prepack作為一個平臺
          • JavaScript Playground - 通過調(diào)整JavaScript引擎體驗JavaScript特性,這些引擎由JavaScript所編寫,托管在瀏覽器中;你可以把它想象成一個“Babel虛擬機”,實現(xiàn)了不能被編譯的JavaScript新特性

          • 捉Bug - 發(fā)現(xiàn)異常崩潰、執(zhí)行問題……

          • 效果分析,例如檢測模塊工廠函數(shù)可能的副作用或強制純凈注釋

          • 類型分析

          • 信息流分析

          • 調(diào)用圖推理,允許內(nèi)聯(lián)和代碼索引

          • 自動測試生成,利用符號執(zhí)行的特性與約束求解器(Constraint Solver)結(jié)合來計算執(zhí)行不同執(zhí)行路徑的輸入

          • 智能模糊(Smart Fuzzing)

          • JavaScript沙盒 - 以不可觀察的方式有效地測試JavaScript代碼

          目前Prepack仍處于早期開發(fā)階段,尚未準備好在生產(chǎn)環(huán)境中使用,官方建議僅嘗試使用,并歡迎提供反饋以幫助修復(fù)錯誤。

          瀏覽 31
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  看黄色片网站免费 | 国内内射在线 | 无码流出在线观看 | 欧美日韩视频高清 | 中国老太卖婬HD视频 |