Egret Engine5.0發(fā)布,率先支持WebAssembly性能大幅提升
白鷺引擎團隊歷經半年封閉開發(fā)于5月24日推出 Egret Engine5.0,本次大版本更新率先支持 黑科技WebAssembly技術、完全支持 ES6、增添支持項目模塊化升級等新功能,實現(xiàn)開發(fā)運行性能大幅提升。這些功能對于開發(fā)者都有哪些幫助,現(xiàn)已被一一揭曉。
一、率先支持 WebAssembly
l 什么是 WebAssembly?
WebAssembly是由谷歌、蘋果、微軟和Mozilla的工程師合力創(chuàng)建(又名wasm)的***國際前沿技術,能夠運用在未來瀏覽器中承諾可帶來20倍更快性能的字節(jié)碼(bytecode)。WebAssembly項目創(chuàng)造全新的字節(jié)碼(一種機器可讀的指令集,能夠更快為瀏覽器加載高級語言),讓桌面和移動端瀏覽器相比較網(wǎng)頁或者應用的整體源代碼變得更加高效。
l 為什么要做 WebAssembly?
眾所周知JavaScript 是解釋型語言,慢,是解釋性語言的主要特點。 Google 在 2009 年在 V8 中引入了 JIT 技術 (Just in time compiling 簡稱即時編譯)。 有了JIT這個buff, Javascript 可實現(xiàn)瞬間提升 20 - 40 倍的速度。但是 JIT 技術也存在缺陷,在即時編譯的時候有些類型無法確定,這個時候 JIT 非但沒有提高效率可能適得其反,所以催生了兩種思路解決這個問題。
一種思路是使用 Typescript、Dart 等強類型語言,實現(xiàn)所有的類型都標注清楚,可把這些語言再編譯成 JavaScript 來運行。
還有一種思路就是以火狐的 Asm.js 為代表的,做一個 JavaScript 子集,利用標注的方法標注變量類型。
Asm.js 相對于 JIT 和原生的性能對比
上圖長度越短說明性能越好,可以發(fā)現(xiàn) Asm.js 是遠遠高于 JIT 的,因為其他方式只能使 JIT 性能快一點,即讓即時編譯速度再快一點,而 Asm.js 已經是編譯好的字節(jié)碼直接運行。
WebAssembly 的工作方式如下:
Egret Engine5.0可以直接將 H5 游戲代碼編譯成機器碼運行,對比Egret Engine4.0版效率提升可達300%。
說明: 引擎對比
在同一測試平臺中,Egret Engine5.0對比Egret Engine4.0效率可提升300%
l 智能切換
Egret Engine5.0團隊進行封閉開發(fā)期間,精心研磨著重重寫了引擎底層從而支持 WebAssembly技術,為開發(fā)者提供更好的性能。如果瀏覽器不支持 WebAssembly ,5.0版引擎能夠自動智能切換成正常 JavaScript 版本,開發(fā)者無需擔憂正常使用。
二、完全支持 ES6、支持項目模塊化升級
l 完全支持 ES6
除了黑科技 WebAssembly技術加持,Egret Engine5.0也完全支持 ES6 (JavaScript語言的下一代標準)新特性,開發(fā)效率將大幅提升,提高了代碼健壯性和容錯率,開發(fā)者可以隨心所欲的使用 ES6 新特性。
l 支持項目模塊化升級
同時,研發(fā)團隊還對Egret Engine5.0進行了模塊化分離,可以支持項目模塊化升級。
例如,開發(fā)者經常反饋的聲音問題,Egret Engine5.0在升級后解決了這個問題,但由于是線上項目引擎升級可能會導致不可預測的問題,所以開發(fā)者會選擇謹慎升級。而Egret Engine5.0支持模塊化升級后,開發(fā)中如果聲音有問題可以單獨升級聲音模塊,且不會影響其他模塊的正常使用,其它模塊升級則同理適用,極大的方便項目管理。
除了以上的特性外,白鷺工具團隊也帶來了全新的游戲創(chuàng)作工具 Paper,寓意輕松、快捷,致力于讓大家更加高效的創(chuàng)作 H5 游戲。Paper 以可視化制作游戲為主,編寫代碼為輔,可以進一步的解放開發(fā)者。目前該款工具還處于內測階段,正式上線時間待定,頗為值得開發(fā)者期待。
Egret Engine5.0的推出標志著 H5 開發(fā)從 JIT 方式向 WebAssembly 方式的邁進,同時也標志著向模塊化管理項目的進步,白鷺引擎希望用更好的產品服務眾多忠誠開發(fā)者,開發(fā)者近期可下載***版引擎,率先觸及黑科技產品帶來的***性能開發(fā)效率體驗。