阅读:3994回复:19
[Nightly] Firefox 23.0a 添加新的基准线编译器
老实说,对于 JS 编译这块我不是太懂,本身没有任何编译版本的经验,所以所有的介绍都是抛砖引玉,有错误指正一下,不要喷哈。
请先看 Mozilla 官方博客的技术介绍文章:The Baseline Compiler Has Landed Firefox Nightly 加入了新的基准线编译器(Baseline Compiler),之前 pcxfirefox 贴图所指出的 BC 就是 Baseline Compiler。有了它,可以继续极高编译速度,提升 JS 性能。 按官方说法,加入后,在自家的 kraken 基准测试和 Google 的 octane 测试中,性能有 5%~10%的提升。 Firefox 的实时编译器有两个:JaegerMonkey 和 IonMonkey,前者是初级,后者是高级,代码先放在 J 当中编译,然后放到 I 编译,耗时且量大,这个新的 BC 取得了平衡,因而提高了性能。 长期来说,这个 BC 将代替 JaegerMonkey,成为 IonMonkey 编译器的基准线编译器。按 Mozilla 的方式,应该是高级别的编译器需要有一个基准线编译器,以前是 J,今后将变为这个 BC。 那对于我们普通用户来说有和好处呢?简单说就是感受到网页加载性能提升、高级功能体验更好(比如大型网页游戏)、占用内存继续下降。 |
|
|
1楼#
发布于:2013-04-07 21:02
今天更新的23确实感觉快了点
|
|
2楼#
发布于:2013-04-07 21:02
值得一提的是在 sunspider 中力压 chrome 。
|
|
3楼#
发布于:2013-04-07 21:02
JaegerMonkey 和IonMonkey的角色不同吗?有点好奇,不知道哪里有简略讲解这些东西的文档?
|
|
|
4楼#
发布于:2013-04-07 21:02
白左:JaegerMonkey 和IonMonkey的角色不同吗?有点好奇,不知道哪里有简略讲解这些东西的文档?回到原帖 我看了篇开发者写的文章,说firefox当前的策略是,当一段js代码被重复执行了若干遍后(目前是40遍),说明是热门代码,就用JaegerMonkey去编译成本地代码,如果这段本地代码以后又被执行了若干遍,说明非常热门,就再用IonMonkey编译一次,IonMonkey编译时会用大量的优化策略,编译出的代码性能更好,但编译耗时更多 文章在这里:https://blog.mozilla.org/javascript/2013/04/05/the-baseline-compiler-has-landed/ |
|
5楼#
发布于:2013-04-07 21:02
白左:JaegerMonkey 和IonMonkey的角色不同吗?有点好奇,不知道哪里有简略讲解这些东西的文档?回到原帖 https://blog.mozilla.org/javascript/201 ... as-landed/ Mozilla 的 js 引擎是spidermonkey, 其中有几个不同的组件。JaegerMonkey, Ionmonkey, Type Interface. Spidermonkey本身是一个翻译器,由于最后的结果不是机器代码,速度比较慢。Jaegermonkey/ionmonkey/baseline compiler都是动态翻译器,作用都是把某些js代码转成机器代码。 现在mozilla用的动态翻译器是jaeger/Ion,baseline compiler 会替代 jaegermonkey。这个计划有很多优势,因为baseline compiler和ion合作更好,提供更多的type-interface信息,使用更少的内存。 |
|
|
6楼#
发布于:2013-04-07 21:02
nighttalker: arewefastyet 上面ff用的是哪个版本?? |
|
7楼#
发布于:2013-04-07 21:02
感谢楼上各位大佬的悉心解答!
难怪现在js的执行效率都逼近native code了,原来有这么多复杂的优化技术,看来浏览器上的js已经不能成为完全的动态语言了……从runtime的角度来看好似是混合编译的呢 |
|
|
8楼#
发布于:2013-04-07 21:02
由于BC enable时, JM不编译任何东西,可能会在24时去掉JM也说不准
|
|
|
9楼#
发布于:2013-04-07 21:02
rasis: 那不是任何一个fx的版本,那是js引擎裹在一个外壳里。awfy的唯一目的是让写代码的能够看到他们代码的效果。 我估计latest-ionmonkey是现在离那些数据最近的可运行版本 ftp://ftp.mozilla.org/pub/firefox/night ... ionmonkey/ |
|
|
10楼#
发布于:2013-04-07 21:02
nighttalker: 这样的话似乎也去掉了PGO对性能提升的影响 |
|
|
11楼#
发布于:2013-04-07 21:02
PGO 应该是包括的。 |
|
|
12楼#
发布于:2013-04-07 21:02
最近我在看arewefastyet的架构,确定这里面的测试都是去除了PGO的影响,因为这个是测试的js shell的成绩,而不是浏览器运行的测试。Mozilla的js shell也没有进行PGO优化。 |
|
|
13楼#
发布于:2013-04-07 21:02
最近我在看arewefastyet的架构,确定这里面的测试都是去除了PGO的影响,因为这个是测试的js shell的成绩,而不是浏览器运行的测试。Mozilla的js shell也没有进行PGO优化。 兄台要不来个23.0a的pgo版本,嘿嘿 |
|
14楼#
发布于:2013-04-07 21:02
|
|
|
上一页
下一页