记录黑客技术中优秀的内容, 传播黑客文化,分享黑客技术精华

使用WebAssembly来加速Web

2018-05-19 01:15

作者:{Zebork}@ArkTeam

原文作者:Andreas Haas (Google), Dan Gohman(Mozilla), Michael Holman(Microsoft), JF Bastien(Apple)

原文标题:Bringing the Web up to Speed with WebAssembly

原文会议:PLDI 2017

原文链接:https://pldi17.sigplan.org/event/pldi-2017-papers-bringing-the-web-up-to-speed-with-webassembly

可下载链接:https://dl.acm.org/citation.cfm?id=3062363

Web平台的成熟引发了复杂和性能要求苛刻的Web应用程序,如交互式3D可视化,音频和视频软件以及游戏。因此,Web平台上代码的高效性和安全性变得越来越重要。然而,JavaScript作为Web平台(浏览器)唯一内置的语言,并不能很好地满足上述需求。

来自四大浏览器供应商(Google, Mozilla, Microsoft, Apple)的工程师已经面对这一挑战,合作设计了一个名为WebAssembly的可移植的底层字节码。它提供严谨的格式、有效的验证和编译、低或无开销安全执行。WebAssembly不针对特定的编程模型,而是对现代硬件的一层抽象,这使得WebAssembly和语言、硬件、平台无关,其平台也不仅仅局限于WebWebAssembly从一开始就被设计为具有正式的语义。论文描述WebAssembly的动机,设计和形式语义,并提供一些实现的初步经验。论文的信息量很大,为了避免篇幅过长,本文仅简单介绍一下WebAssembly的基本概念和直观的性能提升效果。

一、基本概念

文章在第一章首先介绍了WebAssembly的一些特性,即安全性、运行速度、可移植性,压缩性(WebAssembly二进制格式非常紧凑,对于通过网络传输的代码来说能够占用较小带宽,提升加载速度)。同时,文章也回顾了在浏览器中运行底层代码在过去的解决之道。例如Microsoft’s ActiveXNative ClientEmscripten等等。论文比较详细地介绍了WebAssembly的抽象语法,如图1所示。


1 WebAssembly抽象语法

二、性能测试

论文首先以本机代码(Native Code,使用Clang生成)的运行时间为基准,使用PolyBenchCWebAssembly(使用Emscripten生成)进行了性能测试,测试结果如图2所示。在这张图里使用Native Code运行时间做归一化,所以100%的一条横线是Native Code的运行时间,Native Code是用Clang编译的真正的二进制程序,WebAssembly4中情况运行速度更快,7种情况最多没有超过Native Code 10%,而大部分情况是没有超过Native Code200%的,这个性能对于运行在V8SpiderMonkey浏览器引擎里的代码来说,已经非常快了。


图2 WebAssembly与Native Code运行时间对比

对于WebAssemblyasm.js的速度对比,论文没有进行画图比较,作者提到了WebAssembly相较于asm.js快了33.7%。另外,对于代码的紧凑性,实验也进行了比较。论文比较了WebAssemblyasm.js,以及WebAssemblyx86-64本机代码(Native Code)。图3用比值的形式直观地对比了二进制代码的紧凑性。


图3 WebAssembly与asm.js和NativeCode二进制大小对比

平均来说,WebAssembly代码是asm.js的大小的62.5%(中位数68.6%),以及本机x86-64代码大小的85.3%(中位数78%)。

三、总结

论文中提出的新技术已经在四大主流浏览器引擎中得到了实现。虽然WebAssembly201711月开始受到四大主流浏览器支持,到现在也仅仅过去半年,还有很多需要完善的地方。但是WebAssemblyWeb的一个新趋势,其更加广泛的应用势必会给Web带来新的能力和发展空间,同时可能也会为Web安全带来一个全新的领域。

知识来源: www.arkteam.net/?p=3647

阅读:102257 | 评论:0 | 标签:论文笔记

想收藏或者和大家分享这篇好文章→复制链接地址

“使用WebAssembly来加速Web”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

公告

关注公众号hackdig,学习最新黑客技术

推广

工具

标签云