Java极客眼中的WebAssembly
在某些情况下,Wasm 确实可以取代 Docker 和容器。
WebAssembly 无疑是近年来让人最为兴奋的新技术之一,其中最为被人所熟知的三点有: 二进制格式 Low-Level 的编译目标 接近 Native 的执行效率
WebAssembly的前身,asm.js诞生了。但是无论asm.js对静态类型的问题解决的再好,它始终逃不过要经过Parser和ByteCode Compiler,这也是JavaScript代码在引擎执行过程中最耗时的两步。
那为啥 WebAssembly 的性能就一定会比 JavaScript 好很多呢?具体原因还得看下它们到底是处于编译阶段哪个环节了。
本文阐述了 WebAssembly 诞生的背景,并从实践案例中分析了 WebAssembly 到底带来了多少性能提升。
将标志性的《毁灭战士 3》游戏移植到了浏览器上。为期 7 周的全职投入,展示了当前 WebAssembly 在无缝运行重量级桌面应用程序和游戏方面的性能潜力和缺失的部分
。第2阶段(规范提议)包括BigInt转换。第2阶段(实现)包括引用类型和返回多个值。第4阶段(标准化)包括导出和导入可变全局变量和有符号扩展操作。
当听到 WebAssembly(wasm) 最近支持 Go 语言时,我知道实验的时机已经成熟,并且迫切期待尝试。在尝试之前我读了些好文章,而这篇文章将记录我的一些体验。
WebAssembly 的设计目标:定义一个可移植,体积紧凑,加载迅速的二进制格式为编译目标,而此二进制格式文件将可以在各种平台(包括移动设备和物联网设备)上被编译,然后发挥通用的硬件性能以原生应用的速度运行。
随着9月19日Safari和10月31日Edge的发布,苹果与微软加入了谷歌和Mozilla,在生成环境浏览器中提供了对WebAssembly的支持。这四家公司的浏览器都能运行编译为wasm二进制格式的代码。
提到了 WebAssembly,就必然首先提及对其有深远影响的 asm.js,这是 Mozilla 在 2013 年推出的一项新技术,它是 JavaScript 的一个子集,舍弃了大量会导致性能问题的语法,并且被设计为通过 C / C++ 代码编译生成,而非手工编写 asm.js 代码。上述的 sum 函数在 asm.js 中表现为:
当然,Google和其他团队在WebAssembly标准的制定上也功不可没。针对PNaCl插件,Google已经发布了迁移文档。可以说,WebAssembly标准的发布,真正的赢家是开发者!
虽然WebAssembly还比较新,但它已经被证明是快速响应Web应用程序和站点的有效方法。起初,WebAssembly被描述为“在网络上运行C ++的一种方式”,尽管我对C ++和Web都很热爱,但技术上总是模糊不清。直到2016年,我在Chrome开发工具峰会上再次听到这个消息,我决定尝试一下。
编译和优化阶段,WebAssembly 更具优势,因为 WebAssembly 的代码更接近机器码,而 JavaScript 要先通过服务器端进行代码优化。这就是为什么在大多数情况下,同一个任务 WebAssembly 比 JavaScript 表现更好的原因。
WebAssembly 是除了 JavaScript 以外,另一种可以在浏览器中执行的编程语言。所以当人们说 WebAssembly 更快的时候,一般来讲是与 JavaScript 相比而言的。这里并不是暗示大家说开发时只能选择 WebAssembly或 JavaScript。实际上,我们更希望在同一个工程中,两个你同时使用。对二者的比较倒是非常有必要的,这样你就可以了解到 WebAssembly 所拥有的独特特性。
当然,“快”是相对的概念。相比于 JavaScript 和其他动态语言,WebAssembly 的快主要是因为它的静态类型特性和方便优化特性。WebAssembly 意在速度上能够达到和本地执行一样快,其实 asm.js 已经比较接近这一目标了,但是 WebAssembly 要进一步缩短和本地执行速度之间的差距。因此本文着重介绍为什么 WebAssembly 比 asm.js 更快。
除了Firefox,Google也在其Chrome浏览器和Chromium项目中拥抱了WebAssembly,所以作为一个程序员,你应该对WebAssembly引起足够的重视,未来快速加载Web应用程序的需求肯定会增加。
应该还能用
【外评】谷歌:从源头消除内存安全漏洞
【外评】在 RiSC-V 上运行《巫师 3》游戏
【外评】法官驳回大部分 GitHub Copilot 版权索赔要求
谷歌内部推出 SQL 中的管道(Pipe)语法
你们干扰不了我写开源代码
【外评】FreeBSD 将 Rust 纳入基本系统
【外评】电脑从哪里获取时间?
【外评】为什么 Stack Overflow 正在消失?
有时