编译和解释

编程语言分为两类:

编译型:如 C/C++

解释型:如 Java/Python/JS

编译型语言,代码需要经过下面的步骤转成机器码:

文本 -> 汇编语言 -> 可运行机器码

实解释性语言需要经过词法分析、语法分析、语义分析转成汇编语言。然后再把汇编语言翻译成机器码,汇编和机器码是两个比较接近的语言,只是汇编不需要去记住哪个数字代表哪个指令。

WebAssembly

WASM 优势在于它不需要解释器,可以直接转成汇编代码,所以运行速度提升明显。

Mozilla 公司最早开发的 asm.js,后来慢慢主流的浏览器都支持 asm,并发展成 WASM。它的特点是强类型,一般认为 WASM 是 JS 的一个子集,它的特点是强类型,并且只支持整数、浮点数、函数调用、数组、算数计算等。

WASM 和 js 比较

  • 速度比较,计算 1-46 的斐波那契值,重复一百万次,wasm 要比 js 快一倍
  • 解析时间,wasm 解析时间较长
  • 文件大小比较,20000 行代码,wasm 只有 3.4k,压缩后的 js 还有 165k
  • wasm 优缺点,适合对计算性能要求高的,如图形计算方面。缺点是它的类型检查比较严格,写 js 编译经常会报错,不方便 debug。

results matching ""

    No results matching ""