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