【转】Firefox Nightly迎来OdinMonkey 可接近原生速度运 ...

来源:百度文库 编辑:超级军网 时间:2024/04/25 12:50:01


http://www.cnbeta.com/articles/230860.htm

当下浏览器执行JavaScript代码的速度,明显已经比几年前快了很多,但即使我们现在的Web应用看起来越来越像桌面程序,JavaScript的性能仍然比用C或C++之类编写的本地程序要差得很远。为了填补这个差距,Mozilla在一段时间之前上马了asm.js项目,而今天,其代码已登录Firefox Nightly。该浏览器上asm.js优化模块的名字叫做OdinMonkey,允许开发人员用C或C++编写代码,再使用Emscripten编译成JavaScript,并以原生性能2x以内的速度运行。

除非该项目遇到了任何障碍,不然Mozilla应该会在6月,把OdinMonkey带到稳定版Firefox 22。

Asm.js是JavaScript的一个严格子集(strict subset),"可被用作一个低级、高效的目标语言编译器"。Asm.js的规格指出,这个子语集(sub-language)"为C或C++这种'对内存不安全'(memory-unsafe)的语言,提供了一个可有效描述的、安全的虚拟机"。

Mozilla的一名发言人表示:因为它只是一个JavaScript的子集,所以也能在任何其它浏览器上运行——"但会比在Firefox上运行的得更慢一些"。


http://www.cnbeta.com/articles/230860.htm

当下浏览器执行JavaScript代码的速度,明显已经比几年前快了很多,但即使我们现在的Web应用看起来越来越像桌面程序,JavaScript的性能仍然比用C或C++之类编写的本地程序要差得很远。为了填补这个差距,Mozilla在一段时间之前上马了asm.js项目,而今天,其代码已登录Firefox Nightly。该浏览器上asm.js优化模块的名字叫做OdinMonkey,允许开发人员用C或C++编写代码,再使用Emscripten编译成JavaScript,并以原生性能2x以内的速度运行。

除非该项目遇到了任何障碍,不然Mozilla应该会在6月,把OdinMonkey带到稳定版Firefox 22。

Asm.js是JavaScript的一个严格子集(strict subset),"可被用作一个低级、高效的目标语言编译器"。Asm.js的规格指出,这个子语集(sub-language)"为C或C++这种'对内存不安全'(memory-unsafe)的语言,提供了一个可有效描述的、安全的虚拟机"。

Mozilla的一名发言人表示:因为它只是一个JavaScript的子集,所以也能在任何其它浏览器上运行——"但会比在Firefox上运行的得更慢一些"。
差不多赶上c了
有llvm这现成的东西干嘛还要重复造轮子呢?
恐怕永远也赶不上C,不过从现在起,可以对WEB应用报有一定的期望了。

playfish 发表于 2013-3-22 17:07
有llvm这现成的东西干嘛还要重复造轮子呢?
先了解一下Emscripten吧,现阶段OdinMonkey只执行Emscripten生成的JS代码。

“Emscripten并非通常的LLVM后端,本身使用JavaScript写成。它可以将任何通过LLVM 前端(比如 C/C++ Clang)生成的LLVM IR中间码编译成JavaScript,从而显著降低移植现有代码库到Web环境的损耗。”

兰韵 发表于 2013-3-24 09:39
先了解一下Emscripten吧,现阶段OdinMonkey只执行Emscripten生成的JS代码。

“Emscripten并非通常的LL ...
这就跟我想的一致的,我还以为是从头搞的
playfish 发表于 2013-3-24 12:22
这就跟我想的一致的,我还以为是从头搞的
实际上firefox现在有3个js engine。短时的 JavaScript 的 JIT 任务交给 JagarMonkey,它直接将 JavaScript 翻译成机器码,没有全局性优化。长时运行的 JavaScript 中应用IonMonkey,它类似于llvm,引入了一个中间层,使用MIR/LIR两层结构,对IR进行优化。OdinMonkey针对的是经过Emscripten生成的特殊的js代码。
兰韵 发表于 2013-3-24 13:48
实际上firefox现在有3个js engine。短时的 JavaScript 的 JIT 任务交给 JagarMonkey,它直接将 JavaScrip ...
多谢科普!