为什么要使用webassembly

上一篇webassembly简介简单介绍了WASM的一些发展,今天来聊聊为什么需要wasm。下面会分别从开发者和企业的角度来分析分析wasm兴起的原因

从开发者的角度

开发者一般都有个心理习惯,能少做的坚决不做,都希望少做定制化,所以都希望有开源的有跨平台的东西。从这一点出发去想,webassembly有不少点还是切中了开发者的这个心理。

兼容性

Webassembly的兼容性非常好,而且犹豫浏览器完美地支持所有主流平台,所以webassembly的程序兼容性非常优秀。所以基本上和前端的Javascript一样,支持一套程序跑在多个平台上面。更值得注意的是,webassembly相比于Javascript在兼容性方面多了一个生态,那就是cpp或者rust等native编译行语言的生态。这也是 webassemlbly主要的优点之一,从这个角度看,webassembly不仅是自身兼容性非常出色,同时还把cpp语言的兼容性给扩充到了web端侧领域。这使得已经存在的丰富的cpp程序,可以非常方便地给前端使用。除此以外,rust和 dart等非常多的语言都支持编译成 webassembly。可以说,如果将来webos的生态发展起来了,那么webassembly将是这个大一统生态和其他语言的一个桥梁。

性能

性能一直以来都是开发者比较关注和头疼的问题,程序想要体验好,性能不过关肯定是无法满足的。而web端上的应用,一直以来性能问题都是严峻的,所以给人的印象一直都是做不了复杂功能的页面。webassembly的出现,让这个情况有了很明显的改观。从各方面的测试和实际的应用看,同一段程序,基于webassembly实现的程序,相比基于 Javascript 实现的程序在性能表现提升巨大。因此,最近几年从在线版你可以看到了在线photoshop、在线 office和在线视频剪辑等非常吃性能的应用。这些都借助了webassembly技术,才使得这些应用在web端能够上线。对于程序员而言,明显的变化是以前一个耗时的处理任务用javascript绞尽脑汁一顿优化下来可能还不如换cpp实现后编译成wasm效果明显。

从企业的角度

从企业的角度而言,一般来说往往做决策做变化都是不容易的,管理者都是偏向于稳定不冒险的。能促使一个公司一个技术团队使用一项新技术,那这项技术要么是能帮公司挣更多的钱,要么能帮公司节省成本。而企业团队能挣钱能省钱的方式是比较多的,比如使用跨平台技术节省研发成本、尽可能使用端侧计算资源以节省服务器资源和挖掘新用户场景增加用户规模。而这几项项webassembly都有明显的体现

跨平台

在开发者视角中就介绍了webassembly优秀的跨平台特性。对于企业而言,跨平台更多的一个收益则是可以复用已有的东西,从而提升效率,节省人力和时间成本。比如以Photoshop为例,调整饱和度、蒙版混合等在PC端原本就有cpp版本实现,在没有webassembly时想要开发web版,则需要使用js编写实现,可能性能不够还要优化成本。如今基于wasm的ps在线版已经成为现实,原PC端的底层实现大部分都可以复用。如今很多在线版程序都是如此,比如国产的wps据我了解也是用了webwassembly。

端侧计算

如果你去了解一下互联网财报,你会发现服务器成本是除了人力成本以外比较高的成本。服务器的成本贵就主要是算力成本、一个是带宽成本。尤其是如今视频时代和AI时代,这两项成本还会继续攀升。为了降低这两个成本,很多公司研究了很多方法,端侧计算是一个比较有效且常用的方法。比如B站和抖音这种视频平台,会采用服务器降低分辨率、高压缩比来降低数据大小,然后用户侧进行解码后超分再提升分辨率和画质,从而节省了网络带宽。还有最近手机上大模型端侧计算,一方面手机厂商是宣传端侧计算保护了数据安全保护隐私,但对于手机厂商还有另一个好处,就是节省了大量的服务端推理计算资源。这个方法在web端同样适用,举一个最简单的例子,目前基于webassembly的常见推理任务已经支持实时运行了。以前识别一张人像的人脸关键点可能需要回传到服务器算完再返回结果,随着webassembly发展,越来越多耗时任务都可以摆脱对后台服务器的依赖。

挖掘web生态

除了节省成本,webassembly的出现还有助于web生态的发展,企业可以进一步挖掘新的用户场景新的用户。比如以前受限于性能问题,web端很难实现在线视频剪辑如今也因为有了webassembly成为了可能。而因为浏览器是跨平台的,做了在线版本后,理论上无需额外成本也可以把用户扩充到 Linux 用户生态了。


微信公众号

Licensed under CC BY-NC-SA 4.0