拜 JIT(just-in-time)编译所赐,过去几年,JavaScript 程序的性能有了显著的提升,但与C和 C++ 编写的原生应用相比,仍然存在极大的差距。问题的根源在于 JavaScript 语言本身,JavaScript 在设计时并没有考虑到高性能优化。
与其改变 JS 不如创造一门新语言,Google 因此发布了语法类似 JS 但更容易优化的脚本语言 Dart。但从实践角度看,让开发者接受一门全新的语言需要时间,JS 尚能饭否,引入新语言反而让开发变得更复杂。Mozilla 提出了不同的方法,它不是创造新语言而是定义了一个 JavaScript 子集 asm.js,避开了 JavaScript 中大量难以优化的动态功能,没有面向对象结构,特性更少但更容易优化。Ars Technica 的测试显示,asm.js 确实能实现接近原生的性能。目前 asm.js 已进入了 Firefox 的 beta 渠道,大约六周之后 Firefox 用户将能使用支持 asm.js 的稳定版本。但它面临的问题是只有 Firefox 支持 asm.js,Google 只是表达了兴趣,还没开始动手。