与Mozilla的做法不同,Google将赌注压在了本地客户端(Native Client)上,以使得web应用能够在浏览器中执行原生编译的代码。而Mozilla也在努力让JavaScript运行于原生速度。
尽管两者着手的角度不同,但无论是Google的Native Client、还是Mozilla的Emscripten LLVM-to-JavaScript编译器,两者都允许开发者使用C或C++代码,并在浏览器中运行。
Engineering teams at Mozilla and Epic ported Unreal Engine 3 to the Web
鉴于大多数游戏引擎都是用C或C++编写的,asm.js在大部分时候也将重心放在了游戏这块。事实上,在今年3月份的时候,Mozilla就为大家带来了《虚幻3》引擎的免插件演示(Firefox移植版),效果相当给力。
Mozilla的Alon Zakai和Robert Nyman最近宣布,团队通过asm.js和Emscripten编译器上一些小的增量变化,实现了2/3的性能。当然,部分也要归功于Firefox JavaScript引擎的改进。
Zakai和Nyman指出:具体说来,Firefox已经对一些会导致"大量明显变化"(substantial speedups)的浮点操作进行了优化。而Mozilla亦通过clang和gcc本地编译代码的方式衡量了asm.js的性能,并将之与通过Emscripten和asm.js运行相同代码的结果进行了比较(见上图)。
目前看来,asm.js仍然是一个Mozilla项目。不过Chrome和Opera亦表示了将为asm.js进行优化,只是时间上可能不会那么快。值得一提的是,尽管asm.js代码可以在当前任何的JavaScript引擎上运行,但是肯定不会比Firefox运行得更快。