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