fang5566
管理员
管理员
  • UID3719
  • 注册日期2005-03-07
  • 最后登录2024-05-09
  • 发帖数18483
  • 经验4837枚
  • 威望5点
  • 贡献值4316点
  • 好评度1116点
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 终身成就
阅读:3979回复:19

[Nightly] Firefox 23.0a 添加新的基准线编译器

楼主#
更多 发布于:2013-04-07 21:02
老实说,对于 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。

那对于我们普通用户来说有和好处呢?简单说就是感受到网页加载性能提升、高级功能体验更好(比如大型网页游戏)、占用内存继续下降
Firefox More than meets your experience
asdf123456
千年狐狸
千年狐狸
  • UID32588
  • 注册日期2010-04-16
  • 最后登录2020-02-17
  • 发帖数1088
  • 经验299枚
  • 威望0点
  • 贡献值50点
  • 好评度10点
  • 社区居民
  • 忠实会员
1楼#
发布于:2013-04-07 21:02
今天更新的23确实感觉快了点
coolypf
狐狸大王
狐狸大王
  • UID31823
  • 注册日期2010-01-27
  • 最后登录2024-05-18
  • 发帖数361
  • 经验187枚
  • 威望1点
  • 贡献值50点
  • 好评度21点
  • 社区居民
  • 忠实会员
2楼#
发布于:2013-04-07 21:02
值得一提的是在 sunspider 中力压 chrome 。
白左
千年狐狸
千年狐狸
  • UID34985
  • 注册日期2010-12-29
  • 最后登录2023-11-13
  • 发帖数2039
  • 经验655枚
  • 威望0点
  • 贡献值364点
  • 好评度69点
  • 社区居民
  • 忠实会员
3楼#
发布于:2013-04-07 21:02
JaegerMonkey 和IonMonkey的角色不同吗?有点好奇,不知道哪里有简略讲解这些东西的文档?
-いたんですか? -ええ、ずっと
taoww
非常火狐
非常火狐
  • UID39284
  • 注册日期2013-03-18
  • 最后登录2024-05-16
  • 发帖数634
  • 经验580枚
  • 威望0点
  • 贡献值110点
  • 好评度104点
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/
nighttalker
千年狐狸
千年狐狸
  • UID43
  • 注册日期2004-11-22
  • 最后登录2015-05-03
  • 发帖数2283
  • 经验40枚
  • 威望0点
  • 贡献值42点
  • 好评度0点
  • 社区居民
  • 忠实会员
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信息,使用更少的内存。
目前最新版本是:Firefox 37,  请各位注意升级保证安全。
rasis
  • UID3105
  • 注册日期
  • 最后登录
  • 发帖数
  • 经验
  • 威望
  • 贡献值
  • 好评度
6楼#
发布于:2013-04-07 21:02
nighttalker
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信息,使用更少的内存。
回到原帖


arewefastyet 上面ff用的是哪个版本??
白左
千年狐狸
千年狐狸
  • UID34985
  • 注册日期2010-12-29
  • 最后登录2023-11-13
  • 发帖数2039
  • 经验655枚
  • 威望0点
  • 贡献值364点
  • 好评度69点
  • 社区居民
  • 忠实会员
7楼#
发布于:2013-04-07 21:02
感谢楼上各位大佬的悉心解答!
难怪现在js的执行效率都逼近native code了,原来有这么多复杂的优化技术,看来浏览器上的js已经不能成为完全的动态语言了……从runtime的角度来看好似是混合编译的呢
-いたんですか? -ええ、ずっと
pcxfirefox
千年狐狸
千年狐狸
  • UID39042
  • 注册日期2012-06-22
  • 最后登录2018-01-15
  • 发帖数2539
  • 经验1263枚
  • 威望2点
  • 贡献值242点
  • 好评度133点
  • 最爱沙发
  • 忠实会员
  • 社区居民
8楼#
发布于:2013-04-07 21:02
由于BC enable时, JM不编译任何东西,可能会在24时去掉JM也说不准
http://pcxfirefox.wordpress.com/
nighttalker
千年狐狸
千年狐狸
  • UID43
  • 注册日期2004-11-22
  • 最后登录2015-05-03
  • 发帖数2283
  • 经验40枚
  • 威望0点
  • 贡献值42点
  • 好评度0点
  • 社区居民
  • 忠实会员
9楼#
发布于:2013-04-07 21:02
rasis
arewefastyet 上面ff用的是哪个版本??
回到原帖

那不是任何一个fx的版本,那是js引擎裹在一个外壳里。awfy的唯一目的是让写代码的能够看到他们代码的效果。

我估计latest-ionmonkey是现在离那些数据最近的可运行版本 ftp://ftp.mozilla.org/pub/firefox/night ... ionmonkey/
目前最新版本是:Firefox 37,  请各位注意升级保证安全。
pcxfirefox
千年狐狸
千年狐狸
  • UID39042
  • 注册日期2012-06-22
  • 最后登录2018-01-15
  • 发帖数2539
  • 经验1263枚
  • 威望2点
  • 贡献值242点
  • 好评度133点
  • 最爱沙发
  • 忠实会员
  • 社区居民
10楼#
发布于:2013-04-07 21:02
nighttalker
那不是任何一个fx的版本,那是js引擎裹在一个外壳里。awfy的唯一目的是让写代码的能够看到他们代码的效果。

我估计latest-ionmonkey是现在离那些数据最近的可运行版本 ftp://ftp.mozilla.org/pub/firefox/night ... ionmonkey/
回到原帖

这样的话似乎也去掉了PGO对性能提升的影响
http://pcxfirefox.wordpress.com/
nighttalker
千年狐狸
千年狐狸
  • UID43
  • 注册日期2004-11-22
  • 最后登录2015-05-03
  • 发帖数2283
  • 经验40枚
  • 威望0点
  • 贡献值42点
  • 好评度0点
  • 社区居民
  • 忠实会员
11楼#
发布于:2013-04-07 21:02

这样的话似乎也去掉了PGO对性能提升的影响

PGO 应该是包括的。
目前最新版本是:Firefox 37,  请各位注意升级保证安全。
pcxfirefox
千年狐狸
千年狐狸
  • UID39042
  • 注册日期2012-06-22
  • 最后登录2018-01-15
  • 发帖数2539
  • 经验1263枚
  • 威望2点
  • 贡献值242点
  • 好评度133点
  • 最爱沙发
  • 忠实会员
  • 社区居民
12楼#
发布于:2013-04-07 21:02

PGO 应该是包括的。

最近我在看arewefastyet的架构,确定这里面的测试都是去除了PGO的影响,因为这个是测试的js shell的成绩,而不是浏览器运行的测试。Mozilla的js shell也没有进行PGO优化。
http://pcxfirefox.wordpress.com/
bingyuan
火狐狸
火狐狸
  • UID35064
  • 注册日期2011-01-12
  • 最后登录2015-03-14
  • 发帖数128
  • 经验28枚
  • 威望0点
  • 贡献值4点
  • 好评度0点
  • 社区居民
  • 忠实会员
13楼#
发布于:2013-04-07 21:02
最近我在看arewefastyet的架构,确定这里面的测试都是去除了PGO的影响,因为这个是测试的js shell的成绩,而不是浏览器运行的测试。Mozilla的js shell也没有进行PGO优化。

兄台要不来个23.0a的pgo版本,嘿嘿
pcxfirefox
千年狐狸
千年狐狸
  • UID39042
  • 注册日期2012-06-22
  • 最后登录2018-01-15
  • 发帖数2539
  • 经验1263枚
  • 威望2点
  • 贡献值242点
  • 好评度133点
  • 最爱沙发
  • 忠实会员
  • 社区居民
14楼#
发布于:2013-04-07 21:02
bingyuan
兄台要不来个23.0a的pgo版本,嘿嘿
回到原帖

等Release吧

vc的pgo太费时了
http://pcxfirefox.wordpress.com/
上一页
游客

返回顶部