探究webassembly(1):初认识

来源:互联网 发布:js有集合吗 编辑:程序博客网 时间:2024/06/11 21:46
这是一篇总览文章,所以在用词方面尽量追求简短有力,我将在接下来的几篇文章中进行详细的解析
1.定义

如果说集合了各种Web规范的编程语言是JavaScript,那么我会认为它更类似于一个集合了各种Web规范的编译器,帮助你把各种语言编译成Web上执行的代码,官网称之为 format suitable for compilation- 一种合适的编译格式

2.优点

个人认为其有两个突出的优点:

(1):可以将各种语言编译成在web上执行的代码(目前好像只支持C和C++)
(2)逼近原生APP的性能(构想,目前来看还有一段距离)。

3.开发

目前我认识的有两种主要方式来进行webassembly开发:

(1):使用官方的webassembly文本开发,然后用编译成webassembly(类似于C++的源程序用编译器编译到C++的可执行程序?)

(2)
各种语言(例如TypeScript,C)
           
->LLVM bytecode (理论上所有强类型编程语言均可以生成的跨语言的底层虚拟机字节码

->asm.js(本质还是JS,当浏览器不支持webassembly的时候,会回退使用asm.js获得一致的结果)

->webassembly

当然目前还是推荐使用emscripten进行开发,它可以直接生成wasm或者已经帮你完成胶结的JS文件
4.使用

    从资料上来看,受限于目前的webassembly发展水平,目前大部分使用webassembly的场景都是基于JS,作为JS代码的补充,一种调用方式是设计成接口让JS去调用,实际上我发现这种方式消耗性能严重,比起jit并没有特别大的优势(在电脑版谷歌上测试只快了20%),所以建议用共享内存的方式来和JS进行交互
原创粉丝点击