APP下载
报价宝  ›  综合  › 

V8引擎的Emscripten后端将换新改用LLVM WebAssembly

报价宝 来源:baojiabao.com 发布时间:2019-07-09 10:44:00 10月25日更新
报价宝综合消息V8引擎的Emscripten后端将换新改用LLVM WebAssembly

浏览器Chrome的开源Javascript引擎V8团队,释出了他们最新的WebAssembly整合进度,即将把Emscripten后端从原本的Fastcomp,预设转换成LLVM WebAssembly,V8开发团队提到,经过他们的努力,现在LLVM WebAssembly在大多数的指标已经打败了Fastcomp,可以正式预设成为V8的第三代Emscripten后端。

V8的第一代Emscripten后端是2010年的实验性实作,由JavaScript撰写而成,并以文字的形式解析LLVM中介码(IR),但因为LLVM的文本格式会改变,而且编译也不够快,所以有着明显的缺点。而后开发团队在2013年,用LLVM的分叉开发了第二代Emscripten后端Fastcomp,但在产出程式码品质还有编译时间仍不尽理想。

Emscripten后端从Fastcomp换到LLVM WebAssembly,带来了几项优点。首先,编译器执行链接(Linking)速度更快,现在LLVM WebAssembly后端与wasm-ld都支援使用WebAssembly物件档案进行渐增编译,而渐增编译能大幅提升链接速度。开发团队提到,Fastcomp在位元码档案中使用LLVM中介码,而这代表编译器在链接的时候,中介码全部都会由LLVM编译,而这是造成链接时间慢的主要原因。

第二个优点则是,LLVM WebAssembly与Fastcomp相比,能产出容量更小且运作速度更快的程式码。开发团队最佳化了LLVM WebAssembly后端以及Binaryen最佳化工具,Binaryen是WebAssembly编译以及工具链基础设施函式库。

另外,Emscripten后端更新让V8可以支援更多WebAssembly的新功能,开发团队表示,Fastcomp在执行asm2wasm之前就编译出asm.js,这使得难以处理新的WebAssembly功能,像是例外以及SIMD等,而在WebAssembly后端进行这些工作,则是比较符合流程选择。而且使用上游的WebAssembly后端,也就代表能更快获得来自LLVM上游的新功能,包括Clang中新的C++语言功能,还有LLVM中介码最佳化等。

开发团队展示了实验结果,在程式码大小以及执行速度上,LLVM WebAssembly后端表现更加优秀。(下图)WebAssembly后端产生的程式码大小,几乎都比Fastcomp还要小,无论是图左微基准测试,还是右侧大写的宏基准测试,宏测试平均缩小3.7%,开发团队提到,这个程度的程式码容量缩减,对于升级编译器来说,是不错的结果。

而在基准测试速度上(下图),结果看起来比较不一致,在更换成LLVM WebAssembly后端后,不少微基准测试的执行速度反而上升,开发团队提到,由于微基准测试都是单个函式或是循环,因此对于任何程式码的改变,都会轻易的受到虚拟机器的最佳化选择影响,但整体来说,还是有一半的微基准的执行速度有正面改进。

开发团队提到,观察宏基准测试更实际,除了LZMA同样受不理想的内联决策影响是异常值外,每个基准测试的效能都有所改进,平均加速3.2%。

Google拿游戏引擎的作为例子(下图),在编译阶段,LLVM WebAssembly后端因为不仅将程式码编译成位元码,还把位元码编译成WebAssembly,因此整体编译时间比起Fastcomp还要多一点点,但是链接速度却比Fastcomp快7倍。

文章标签: 报价宝 降噪耳机价格 耳机价格 红米手机价格 华为手机价格 小米手机价格 电视机价格 笔记本电脑价格 笔记本价格 汽车价格 报价宝 笔记本价格 笔记本电脑价格 红米手机价格 降噪耳机价格