基于WebAssembly的JavaScript性能優(yōu)化方案研究與實現
發(fā)布時間:2020-12-03 09:51
隨著互聯網技術的發(fā)展,Web程序的應用也日趨廣泛,JavaScript所承擔的作用也不只是設計之初那樣處理簡單的DOM交互,更多的是需要為圖形處理,物理引擎和虛擬現實等計算密集型操作提供支持。然而JavaScript以易用性為主的設計理念導致其性能上無法高效的應對繁重的處理需求,特別是在計算資源資源有限的平臺。因此如何能夠有效的提升JavaScript代碼的執(zhí)行效率,這對于網絡應用程序的發(fā)展至關重要。以往采用的在Web端利用插件實現繁雜密集運算功能的方式由于安全性和代碼移植限制等問題逐漸被舍棄。在Web端引入即時編譯的技術使得JavaScript的執(zhí)行性能有了大幅提升,但是優(yōu)化及退優(yōu)化操作和額外的內存開銷也使其無法高效的應付功能繁雜的應用,在配置資源有限的移動端平臺更為顯著。為了解決以上方法存在的缺陷,使得Web應用程序擁有更高效的執(zhí)行效率。我們利用最新的前端字節(jié)碼技術,實現了一種基于WebAssembly的JavaScript代碼性能優(yōu)化方案。一方面利用WebAssembly對與性能相關的計算密集型代碼段進行優(yōu)化;另一方面利用代碼段合并方法減少數據交互過程所帶來的的性能開銷。本文針對...
【文章來源】:西北大學陜西省 211工程院校
【文章頁數】:70 頁
【學位級別】:碩士
【部分圖文】:
可用硬件JavaScript程序運行時間統(tǒng)計
第三章 基于 WebAssembly 的 JavaScript 性能優(yōu)化方法通過上一章的分析,對于 JavaScript 的性能缺陷和現有解決方案有了初步的了解。本文結合 WebAssembly 技術,提出了一種基于 WebAssembly 的 JavaScript 性能優(yōu)化方法。WebAssembly 是一種二進制格式代碼,作為 C/C++等源代碼的高效編譯目標可以運行在 Web 端。3.1 JSOPW 優(yōu)化方法概述JSOPW 的核心在于通過篩選規(guī)則獲取待優(yōu)化代碼中的數字計算類型的代碼段,并且編譯生成 WebAssembly 模塊。再針對 WebAssembly 模塊調用過程中產生的性能開銷設計代碼段合并規(guī)則以減少數據交互次數。圖 2 描述了 JSOPW 優(yōu)化方案的執(zhí)行過程。
輸入符號相關謂詞條件的取值,就是含有輸入符號的布爾類型表達式。路徑約束集合是用來收集每一條路徑上收集到的路徑約束,用“與”操作進行連接,并且通過使用約束求解器對約束集合進行求解,就可以得到這條路徑是否可達[52]。如果約束求解器有解則說明路徑可達,否則則表示路徑不可達。在資源充足的情況下符號執(zhí)行可以對程序的執(zhí)行路徑全覆蓋。為了防止動態(tài)執(zhí)行過程中路徑爆炸的問題,可以采用狀態(tài)合并等方式進行處理。因為程序的主要目的在于優(yōu)化而非代碼分析,則可以通過提供測試用例的方式來增加執(zhí)行的覆蓋路徑,提高優(yōu)化框架的執(zhí)行效率。我們使用圖 3(a) 中的 JavaScript程序作為一個運行示例,其中 var a=b 表示利用表達式 b 的值來初始化變量 v。語句var x=Input()表示從輸入流中獲取值并且賦值給變量 x。動態(tài)符號執(zhí)行通過探索圖 3(b)的中執(zhí)行樹來選擇程序的執(zhí)行策略。我們在動態(tài)符號執(zhí)行的過程中添加監(jiān)測模塊,記錄程序執(zhí)行過程中堆棧信息和控制流信息,并且排列這些堆棧數據獲得更為直觀的 JavaScript 變量數據值,最后通過樹型結構對節(jié)點屬性和嵌套結構進行保存。
【參考文獻】:
期刊論文
[1]一種具有指令集隨機化的代碼虛擬化保護系統(tǒng)[J]. 湯戰(zhàn)勇,李光輝,房鼎益,陳曉江. 華中科技大學學報(自然科學版). 2016(03)
[2]基于精簡指令集的軟件保護虛擬機技術研究與實現[J]. 湯戰(zhàn)勇,王懷軍,房鼎益,陳曉江. 微電子學與計算機. 2011(08)
本文編號:2896273
【文章來源】:西北大學陜西省 211工程院校
【文章頁數】:70 頁
【學位級別】:碩士
【部分圖文】:
可用硬件JavaScript程序運行時間統(tǒng)計
第三章 基于 WebAssembly 的 JavaScript 性能優(yōu)化方法通過上一章的分析,對于 JavaScript 的性能缺陷和現有解決方案有了初步的了解。本文結合 WebAssembly 技術,提出了一種基于 WebAssembly 的 JavaScript 性能優(yōu)化方法。WebAssembly 是一種二進制格式代碼,作為 C/C++等源代碼的高效編譯目標可以運行在 Web 端。3.1 JSOPW 優(yōu)化方法概述JSOPW 的核心在于通過篩選規(guī)則獲取待優(yōu)化代碼中的數字計算類型的代碼段,并且編譯生成 WebAssembly 模塊。再針對 WebAssembly 模塊調用過程中產生的性能開銷設計代碼段合并規(guī)則以減少數據交互次數。圖 2 描述了 JSOPW 優(yōu)化方案的執(zhí)行過程。
輸入符號相關謂詞條件的取值,就是含有輸入符號的布爾類型表達式。路徑約束集合是用來收集每一條路徑上收集到的路徑約束,用“與”操作進行連接,并且通過使用約束求解器對約束集合進行求解,就可以得到這條路徑是否可達[52]。如果約束求解器有解則說明路徑可達,否則則表示路徑不可達。在資源充足的情況下符號執(zhí)行可以對程序的執(zhí)行路徑全覆蓋。為了防止動態(tài)執(zhí)行過程中路徑爆炸的問題,可以采用狀態(tài)合并等方式進行處理。因為程序的主要目的在于優(yōu)化而非代碼分析,則可以通過提供測試用例的方式來增加執(zhí)行的覆蓋路徑,提高優(yōu)化框架的執(zhí)行效率。我們使用圖 3(a) 中的 JavaScript程序作為一個運行示例,其中 var a=b 表示利用表達式 b 的值來初始化變量 v。語句var x=Input()表示從輸入流中獲取值并且賦值給變量 x。動態(tài)符號執(zhí)行通過探索圖 3(b)的中執(zhí)行樹來選擇程序的執(zhí)行策略。我們在動態(tài)符號執(zhí)行的過程中添加監(jiān)測模塊,記錄程序執(zhí)行過程中堆棧信息和控制流信息,并且排列這些堆棧數據獲得更為直觀的 JavaScript 變量數據值,最后通過樹型結構對節(jié)點屬性和嵌套結構進行保存。
【參考文獻】:
期刊論文
[1]一種具有指令集隨機化的代碼虛擬化保護系統(tǒng)[J]. 湯戰(zhàn)勇,李光輝,房鼎益,陳曉江. 華中科技大學學報(自然科學版). 2016(03)
[2]基于精簡指令集的軟件保護虛擬機技術研究與實現[J]. 湯戰(zhàn)勇,王懷軍,房鼎益,陳曉江. 微電子學與計算機. 2011(08)
本文編號:2896273
本文鏈接:http://www.lk138.cn/guanlilunwen/ydhl/2896273.html
最近更新
教材專著