Lin Clark 预测,2017 年推出的 WebAssembly 可能会让 Web 开发产业迎来全新的拐点。上一个拐点来自现代浏览器中引入的 JIT 编译,其使 JavaScript 的速度提高了近 10 倍。
JavaScript 性能
如果对比 WebAssembly 与 JavaScript 的编译过程,你会注意到前者剥离了几个步骤,剩下的都被缩减了。下图是两种语言编译过程的直观对比。
WebAssembly 与传统 Web 应用程序编译过程的近似对比
仔细对比两者,你会注意到 WebAssembly 中的重优化部分已被完全剥离。这主要是因为:编译器无需对 WebAssembly 代码做任何假设,因为数据类型之类的东西在代码中是显式展现的。
但 JavaScript 不是这样,因为 JIT 应该为运行代码做出假设,如果假设失败,则应重优化代码。