asm.js性能提升,让游戏飞起来

来源:互联网 发布:appium使用教程python 编辑:程序博客网 时间:2024/05/19 05:39

asm.js 的显著变化

asm.js是JavaScrpit的一个子集,是专门用来将C或者C++代码移植到网络中,非常便于优化。我们之前在博客中为大家介绍过Firefox如何使用32位浮点操作来优化asm.js代码,同其他优化工作一起,允许它以比相同的原生编译的C 或C++的慢1.5倍的速度运行。尽管还没有完全达到原生速度,但已经非常接近了。在之前,这些优化只创建在了Nightly分支中,但是现在已经加入到最新发布的

Web浏览器之间的比较


现在,之前提到的这些优化都已经正式发布,我们可以来看下各浏览器在asm.js代码执行上的比较。上图展示了Emscripten benchmark运行在Windows 8.1 上的最新稳定版Google Chrome, IE和Firefox。在所有的结果中,数值越小越好,这些是现实中编译asm.js的结果(请见图片中的注释)。


Unity, Emscripten和asm.js

asm.js是JavaScript的一个子集,仅仅是JavaScript的众多样式中的一种。但是它代表了一个很重要的使用案例。在今年的游戏开发者大会(GDC)中,流行游戏创建工具Unity使用Emscipten将他们的引擎编译到asm.js中来支持Web中的运行。


尽管游戏视频中没有字幕,用户现在可以自己在浏览器中来尝试这些游戏,Unity最近发布了死亡扳机2和愤怒的机器人两款demo。如果你在最新版Firefox火狐浏览器中运行,会看到之前提到的很多asm.js的优化。例如,如果你访问某个链接超过一次,asm.js的缓存会避免重复编译游戏(因此会启动更快),基于更快的asm.js执行,玩家会感到更为平滑。


能够高效执行asm.js样式的代码使得游戏可以在Web中更好的运行,并且无需专门的、非标准的插件。这也是将为什么更多asm.js优化加入到Firefox 29中,从而提供给更多用户让人兴奋的地方。尽管benchmark结果看起来只是一些抽象数字,asm.js benckmark的提升直接推动了像游戏等对性能要求非常高的应用和服务。

转载:http://mozilla.com.cn/post/62476/

 

0 0