WebAssmebly简介

自从2008年各大浏览器为JavaScript执行引擎加入JIT(Just in Time, 即时编译器)以来,JavaScript在浏览器的执行性能有了一个量级的飞跃提升,促进了Web领域的飞速发展,一大波大型Web应用丰富了我们的网络世界。但是,JIT带来的性能提升也有天花板,在处理复杂运算的情况下表现仍有不足,为了更进一步解决JavaScript的性能问题,WebAssembly就应运而生了。
(本文非例子部分的图片出自文章1. https://hacks.mozilla.org/2017/02/a-cartoon-intro-to-webassembly/,文字部分基本参考该文章)

1.什么是WebAssembly。

  • 它是一种新的、跨平台的web编译技术,可以让众多静态语言编译出浏览器可以运行的代码文件,文件格式为wasm,是一种相当接近机器语言的二进制格式文件;

  • 相比于文本格式的JavaScript文件来说有着体积小、下载速度快的特点;

  • 因为是从强类型语言编译的,所以JavaScript引擎不用猜测变量类型,也不用经历弃优化、重优化步骤,所以代码运行得更快;

  • 这种技术出现,并不是为了替代JavaScript,而是作为JavaScript的一个良好补充;
    很有可能就是WebAssembly。

WebAssembly如何工作

工作原理:WebAssembly的工作原理简要来说是将C,C++, Rust等静态语言的程序编译成浏览器能够运行的wasm二进制文件,当浏览器加载wasm文件后编译为本地机器码后运行。

我们知道大多数静态高级语言是通过编译器前端编译成为中间代码,然后再由编译器后端把中间代码翻译成目标机器的可执行机器码的。

而wasm对应的位置则是生成特定平台机器码之前,类似于一种汇编语言,但是它不对应真实的物理机器,而是一种对应抽象的机器,比JavaScript源码更直接地对应机器码。浏览器下载wasm文件后只需要做简单的编译就能执行。

更多
来自

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值