阅读更多
asm.js是Mozilla在2013年年初推出的一个JavaScript的严格子集,它提供了一个类似于C/C++虚拟机的抽象实现,包括一个可有效负载和存储的大型二进制堆、整型和浮点运算、高阶函数定义、函数指针等。

asm.js可以被用来作为一个底层的、高效的编译器目标语言,即可以将C/C++程序通过Emscripten编译为asm.js代码,以提升程序的执行速度。如果使用Mozilla专门为asm.js开发的优化模块OdinMonkey,则会进一步提升速度,更加接近于原生应用。

在今年年初asm.js推出时,其代码的运行速度大约为原生应用的一半。在此之后,Mozilla进行了诸多实验和优化,有小方面的优化,也有大方面的改进,比如在Firefox中可以使用32位浮点数来代替64位双精度数,这在某些情况下可以得到更快的速度。

目前Mozilla已经在Emscripten和SpiderMonkey(Firefox的JS引擎)中完成了该工作,下面是基准测试结果对比。



红色条(firefox-f32)表示通过启用float32的Emscripten生成的代码的运行速度,可以发现,相比未启用float32特性的运行速度有了一定的提升。而用来进行对比的原生应用编译器有两个——clang和gcc,这两个编译器编译后的原生代码在性能上也有所差异。

需要注意的是,在Emscripten中,float32代码生成选项默认是关闭的。这是因为float32尽管能够提升性能,但是也会增加代码量(比如添加Math.fround调用),这在某些情况下是有害的,尤其是在JS引擎尚未支持Math.fround的情况下。

Web应用自诞生以来,其与原生应用之争就一直存在,而HTML5阵营的诸多开发者的工作正使得Web应用的性能越来越接近于原生应用,这对于HTML5未来的发展是极大地利好。

Via mozilla
  • 大小: 37.8 KB
2
0
评论 共 1 条 请登录后发表评论
1 楼 sailei1 2013-12-30 09:23
放到实际应用里  估计就不好说了!

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • asm.js:面向未来的开发

    这是一个可深可浅的话题,会先简单介绍一下什么是asm.js,看看它长什么样子,再来聊聊asm.js为什么能带来高性能,会有一些简单的对比,然后再从工程的角度讲讲兼容性,如何打包使用等等。水平有限,肯定讲不透,就当...

  • WebAssembly编译之(1)-asm.js及WebAssembly原理介绍

    asm.js及WebAssembly原理介绍

  • Asm.js: Javascript的编译目标

    同样感兴趣的还有Mozilla和Epic声明(mirror)他们已经为Asm.js而支持Unreal Engine 3——并且运行十分良好。 获得一个C++游戏引擎运行Javascript,并使用WebGL来渲染,这是一个重大的突破,这个突破很大程度上归功...

  • 关于Asm.js的一些基本介绍和它的实现

    Asm介绍asm是mozilla提出的一套基于JS的语法标准,由 Mozilla 的 Emscripten项目催生而来,主要为了解决js执行效率问题,尤其是通过Emscripten转换过来的js代码效率。那什么是Emscripten和asm,关于它的诞生,最主要...

  • js asm.js

    这个编译器可以将 C / C++ 代码编译成 JS 代码,但不是普通的 JS,而是一种叫做 asm.js 的 JavaScript 变体。 C / C++ 编译成 JS 有两个最大的困难: C / C++ 是静态类型语言,而 JS 是动态类型语言。 C / C++ ...

  • WebAssembly笔记(2)-从asm.js到wasm

    随着Web网页的广泛发展,拥有JIT技术加持后,JavaScript的执行效率大幅提升,但由于解释型语言的特点,以及动态类型的天生缺陷,在某些CPU密集计算型的应用场景下,JavaScript的性能仍然力不从心。而且有大量C/C++等...

  • asm.js 和 Emscripten 入门教程

    作者:阮一峰 日期:2017年9月 7日 Web 技术突飞猛进,但是有一个领域一直无法突破 ---- 游戏。 游戏的性能要求非常高,一些大型游戏连 PC...2012年,Mozilla 的工程师Alon Zakai在研究 LLVM 编译器时突发奇想:...

  • javasript性能提升之WebAssembly和asm.js

    文章转载自知乎的罗志宇的回答 作者:罗志宇 ...来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。...Javascript ,也叫Ecma script, 是这家伙用了 10 天时间赶出来的。。

  • 【转】asm.js 和 Emscripten 入门教程

      Web 技术突飞猛进,但是有一个领域一直无法突破 ---- 游戏。 游戏的性能要求非常高,...2012年,Mozilla 的工程师 Alon Zakai 在研究 LLVM 编译器时突发奇想:许多 3D 游戏都是用 C / C++ 语言写的,如果能将...

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

    4月底发布的最新版火狐浏览器中,包含...为了更直观的了解火狐性能方面的问题,我们来看下火狐和其他浏览器在benchmark结果上的比较,这里显示了Firefox在执行asm.js代码上更为快速。 asm.js 的显著变化 asm.js

  • 前端高性能计算之二:asm.js & webassembly

    ,性能差不多是原生代码的50%。大家可以看看 这个PPT 。 之后Google开发了[Portable Native Client][PNaCI],也是一种能让浏览器运行C/C++代码的技术。 后来估计大家都觉得各搞各的不行啊,居然Google, Microsoft,...

  • Asm.js- Javascript的编译目标

    同样感兴趣的还有Mozilla和Epic声明(mirror)他们已经为Asm.js而支持Unreal Engine 3——并且运行十分良好。 获得一个C++游戏引擎运行Javascript,并使用WebGL来渲染,这是一个重大的突破,这个突破很大程度上归功...

  • Javascript支持3D游戏,asm.js 和 Emscripten工具,以及和WebAssembly的区别

    游戏的性能要求非常高,一些大型游戏连 PC 跑起来都很吃力,更不要提在浏览器的沙盒模型里跑了!但是,尽管很困难,许多开发者始终没放弃,希望让浏览器运行 3D 游戏。 2012年,Mozilla 的工程师 Alon Zakai...

  • Firefox 29发布:asm.js性能提升和新的Web API

    \\asm.js是由Mozilla开发的一个JavaScript子集,它可以使性能密集型的Web应用在不使用插件的情况下能够以接近原生应用的速度运行,例如游戏类应用。继Mozilla与游戏开发公司Unity上个月在GDC大会上宣布合作之后...

  • 转:asm.js 和 Emscripten 入门教程

    asm.js 和 Emscripten 入门教程 作者:阮一峰 日期:2017年9月 7日 Web 技术突飞猛进,但是有一个领域一直无法突破 ---- 游戏。 游戏的性能要求非常高,一些大型游戏连 PC 跑起来都很吃力,更不要提在...

  • pre_o_1csdn63m9a1bs0e1rr51niuu33e.a

    pre_o_1csdn63m9a1bs0e1rr51niuu33e.a

  • matlab建立计算力学课程的笔记和文件.zip

    matlab建立计算力学课程的笔记和文件.zip

  • FT-Prog-v3.12.38.643-FTD USB 工作模式设定及eprom读写

    FT_Prog_v3.12.38.643--FTD USB 工作模式设定及eprom读写

  • matlab基于RRT和人工势场法混合算法的路径规划.zip

    matlab基于RRT和人工势场法混合算法的路径规划.zip

  • matlab基于matlab的两步定位软件定义接收机的开源GNSS直接位置估计插件模块.zip

    matlab基于matlab的两步定位软件定义接收机的开源GNSS直接位置估计插件模块.zip

Global site tag (gtag.js) - Google Analytics