8783
火狐狸
火狐狸
  • UID34717
  • 注册日期2010-11-29
  • 最后登录2013-04-16
  • 发帖数210
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
阅读:5424回复:21

Firefox 9中加入类型推断 JavaScript性能将提高20%到30%

楼主#
更多 发布于:2011-09-02 12:02
据外媒报道,在历时长达18个月的努力之后,Mozilla终于成功为Firefox的Javascript引擎增加了一个重大的新特性,根据初步测试,至少可以提高20%到30%的Javascript性能。这个新的特性就是在Firefox的JaegerMonkey JIT编译器中加入的类型推断(Type Inference),它将随同Firefox 9一起提供测试。类型推断最早被提及还要追溯到几个月之前的Firefox 5时代,但是直到现在它才第一次登上舞台。



对于Firefox 9来说,数据推断引擎可以将Javascript的性能提高30%。具体提升的数值根据测试的不同而有所不同,但性能的大大提升是毋庸置疑的。据ExtremeTeck在配置为Intel i7 930 @ 3.8GHz、内存6GB、显卡为Nvidia GTX 460的电脑上测试结果,在关闭类型推断的情况下,Kraken Benchmark的完成时间为3895毫秒;开启类型推断之后,时间缩短到2763毫秒。在V8 Javascript Benchmark中,关闭类型推断的Firefox 9的成绩为6075分,而开启类型推断后,成绩提升到6585分。即使在陈旧的微软HTML5 Sudoku测试中,10000格下类型推断将执行时间从2.6秒缩短至1.62秒;在FishBowl的帧率测试中,2000条鱼的情况下,类型推断开启后带来了15%-20%的性能提升。







終於決定在 FIREFOX9 使用 TI了 @@

dindog
千年狐狸
千年狐狸
  • UID30818
  • 注册日期2009-10-24
  • 最后登录2025-02-19
  • 发帖数1201
  • 经验67枚
  • 威望0点
  • 贡献值34点
  • 好评度10点
1楼#
发布于:2011-09-02 12:02

能给个测试界面吗?另外你得排除扩展和脚本冲突,我没有油猴或者其他脚本扩展

另外我发现有些界面在animate的时候,cpu占用可能会上升到70%(AMD X2 245,2.9G双核),但是仍然很流畅
而有的页面cpu占用没有那么高,却会出现不流畅的感觉(比如用fx4在新twitter界面滚动)

仿佛这种主观上的"卡"和cpu占用并没有直接联系

嘛。反正任意一个百度知道的答案输入框,焦点放在那里就看出来了。空白配置确认过了,不少人也确认过了,slimx大连解决脚本都有了。。你确认了也没什么用吧

单核cpu占用100%,双核50%。fx是单线程的

正好是2个月前的贴子
https://g.mozest.com/viewthread.php?tid ... e=1&extra=
以前firefox跳个票的时间现在可以发布几个正式版了-_-
白左
千年狐狸
千年狐狸
  • UID34985
  • 注册日期2010-12-29
  • 最后登录2025-04-27
  • 发帖数2040
  • 经验656枚
  • 威望0点
  • 贡献值364点
  • 好评度69点
  • 社区居民
  • 忠实会员
2楼#
发布于:2011-09-02 12:02

表示百度知道就是用单核cpu卡到mp3都卡发现的……而且什么都不干也有10%占用率,怎么会那样?



能给个测试界面吗?另外你得排除扩展和脚本冲突,我没有油猴或者其他脚本扩展

另外我发现有些界面在animate的时候,cpu占用可能会上升到70%(AMD X2 245,2.9G双核),但是仍然很流畅
而有的页面cpu占用没有那么高,却会出现不流畅的感觉(比如用fx4在新twitter界面滚动)

仿佛这种主观上的"卡"和cpu占用并没有直接联系
-いたんですか? -ええ、ずっと
dongyuanxun
非常火狐
非常火狐
  • UID28632
  • 注册日期2009-04-19
  • 最后登录2013-02-14
  • 发帖数898
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
3楼#
发布于:2011-09-02 12:02
huhuhu:给的例子不好,试试这个网址
http://culture.ifeng.com/
滚动鼠标时我的cpu超过60%
我在隔壁问了问说是这个脚本引起的
http://img.ifeng.com/tres/pub_res/JCore/scroll.v.1.2.js
具体原因就是setTimeout/setTimeinterval函数引起的。
回到原帖

略微高些,我这里上到20%
huhuhu
火狐狸
火狐狸
  • UID34430
  • 注册日期2010-11-04
  • 最后登录2013-11-28
  • 发帖数119
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 社区居民
4楼#
发布于:2011-09-02 12:02
给的例子不好,试试这个网址
http://culture.ifeng.com/
滚动鼠标时我的cpu超过60%
我在隔壁问了问说是这个脚本引起的
http://img.ifeng.com/tres/pub_res/JCore/scroll.v.1.2.js
具体原因就是setTimeout/setTimeinterval函数引起的。
8783
火狐狸
火狐狸
  • UID34717
  • 注册日期2010-11-29
  • 最后登录2013-04-16
  • 发帖数210
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
5楼#
发布于:2011-09-02 12:02
白左


我这里看不大出来……即使什么都不干,fx的cpu占用都大概在10%左右……
所以一般我都只看体验流畅度来着……
就测试而言,好像二者都差不太多……就算有差,应该也不是性能瓶颈……
回到原帖


我的是0-2%

dindog
千年狐狸
千年狐狸
  • UID30818
  • 注册日期2009-10-24
  • 最后登录2025-02-19
  • 发帖数1201
  • 经验67枚
  • 威望0点
  • 贡献值34点
  • 好评度10点
6楼#
发布于:2011-09-02 12:02
白左


我这里看不大出来……即使什么都不干,fx的cpu占用都大概在10%左右……
所以一般我都只看体验流畅度来着……
就测试而言,好像二者都差不太多……就算有差,应该也不是性能瓶颈……
回到原帖

表示百度知道就是用单核cpu卡到mp3都卡发现的……而且什么都不干也有10%占用率,怎么会那样?
以前firefox跳个票的时间现在可以发布几个正式版了-_-
白左
千年狐狸
千年狐狸
  • UID34985
  • 注册日期2010-12-29
  • 最后登录2025-04-27
  • 发帖数2040
  • 经验656枚
  • 威望0点
  • 贡献值364点
  • 好评度69点
  • 社区居民
  • 忠实会员
7楼#
发布于:2011-09-02 12:02
GOLF-AT
9-10% vs 0-5%
fx9,chrome13
回到原帖



我这里看不大出来……即使什么都不干,fx的cpu占用都大概在10%左右……
所以一般我都只看体验流畅度来着……
就测试而言,好像二者都差不太多……就算有差,应该也不是性能瓶颈……
-いたんですか? -ええ、ずっと
saga
火狐狸
火狐狸
  • UID35049
  • 注册日期2011-01-09
  • 最后登录2017-10-10
  • 发帖数119
  • 经验69枚
  • 威望0点
  • 贡献值48点
  • 好评度2点
  • 社区居民
8楼#
发布于:2011-09-02 12:02
kmc

https://tylerdowner.wordpress.com/2011/ ... d-musings/
的确,他是在失望中离开的。我原来也很有热情去给sumo做翻译,自从他们改用Rapid Release之后也就再没有热情了,他们总是在按照自己喜欢的方式在追随Chrome,我现在能做的就是远远地奢望着Firefox保持自己应有的特质。

让人郁闷的不光是Firefox越来越像Chrome,更重要的是你考虑到换一个浏览器,却发现没有谁能取代得了Firefox
回到原帖

大杯具啊。。。firefox没有个英明的领导
-----------------------
PS:KMC终于换掉了那个熟女头像了
dindog
千年狐狸
千年狐狸
  • UID30818
  • 注册日期2009-10-24
  • 最后登录2025-02-19
  • 发帖数1201
  • 经验67枚
  • 威望0点
  • 贡献值34点
  • 好评度10点
9楼#
发布于:2011-09-02 12:02
GOLF-AT
我的电脑上,我改成 10ms 间隔,Firefox CPU使用率 6%~8%,Google Chrome 一共2个进程,加起来5%~5.5%左右,相差不是很多。
另外,CPU使用率没有一直上升到很大,说明 Firefox 的计时器函数代码没有问题,仅仅是代码的性能差一些,CPU 使用率稍微高一些。还有就是,这个可能和电脑性能有一些关系,不同的电脑上可能会表现不同。
回到原帖

9-10% vs 0-5%
fx9,chrome13
以前firefox跳个票的时间现在可以发布几个正式版了-_-
kmc
kmc
管理员
管理员
  • UID165
  • 注册日期2004-11-25
  • 最后登录2024-08-29
  • 发帖数9187
  • 经验398枚
  • 威望1点
  • 贡献值124点
  • 好评度41点
  • 忠实会员
  • 终身成就
  • 社区居民
10楼#
发布于:2011-09-02 12:02
slimx:编辑掉回到原帖


https://tylerdowner.wordpress.com/2011/ ... d-musings/
的确,他是在失望中离开的。我原来也很有热情去给sumo做翻译,自从他们改用Rapid Release之后也就再没有热情了,他们总是在按照自己喜欢的方式在追随Chrome,我现在能做的就是远远地奢望着Firefox保持自己应有的特质。

让人郁闷的不光是Firefox越来越像Chrome,更重要的是你考虑到换一个浏览器,却发现没有谁能取代得了Firefox。
Waterfox Current和Firefox Nightly都用,逐渐走出XUL扩展依赖
GOLF-AT
千年狐狸
千年狐狸
  • UID11611
  • 注册日期2006-02-20
  • 最后登录2019-12-30
  • 发帖数3239
  • 经验265枚
  • 威望1点
  • 贡献值260点
  • 好评度59点
  • 社区居民
  • 忠实会员
11楼#
发布于:2011-09-02 12:02

例子用个很简单的:
http://www.w3schools.com/js/tryit.asp?f ... g_infinite

把间隔设小一点就可以同其它浏览起对比。差别很大。之前在mozest提到那个百度知道回答文本框焦点更明显。

我的电脑上,我改成 10ms 间隔,Firefox CPU使用率 6%~8%,Google Chrome 一共2个进程,加起来5%~5.5%左右,相差不是很多。
另外,CPU使用率没有一直上升到很大,说明 Firefox 的计时器函数代码没有问题,仅仅是代码的性能差一些,CPU 使用率稍微高一些。还有就是,这个可能和电脑性能有一些关系,不同的电脑上可能会表现不同。
slimx
火狐狸
火狐狸
  • UID21790
  • 注册日期2007-11-09
  • 最后登录2013-08-05
  • 发帖数119
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
12楼#
发布于:2011-09-02 12:02
编辑掉
dindog
千年狐狸
千年狐狸
  • UID30818
  • 注册日期2009-10-24
  • 最后登录2025-02-19
  • 发帖数1201
  • 经验67枚
  • 威望0点
  • 贡献值34点
  • 好评度10点
13楼#
发布于:2011-09-02 12:02
GOLF-AT
这个没试过。
我自己是写程序的,在 Windows 下,当时间间隔小于 56ms 时,需要使用的函数不一样。间隔 >=56ms 时,使用 SetTimer 这个函数即可。自己写的代码执行的时间,大于时间间隔也没关系,只是导致一些事件跳过不会执行。比如:间隔为100ms,但是自己写的计时器函数需要200ms才能执行完,那么第100ms、300ms、500ms …… 时程序会收到 WM_TIMER 这个消息,但是 200ms、400ms、600ms …… 时的 WM_TIMER 消息会被抛弃。

当间隔小于 56ms 时,需要使用 timeSetEvent 这个函数。但是,使用函数 timeSetEvent 时,需要注意,自己写的计时器函数,代码执行的时间,必须小于间隔时间,否则就会一直累积,导致CPU使用率越来越高,最后程序崩溃。比如,时间间隔是 10ms,但如果自己写的函数代码需要 20ms 才能执行完,那么每过 10ms 自己写的函数就会被调用,但此时上次的调用还没执行完,所以函数就会同时被执行很多次。刚开始还好一些,时间稍微长一点,那么同一时间这个函数就会被同时执行很多次,导致CPU使用率非常高。10几年前的 Windows 98,连 Windows 98 都会被这样搞死。所以,此时就需要一些机制,当上一次的代码还没执行完时,这次执行时需要跳过,让函数调用很快就结束,才不会导致问题。
回到原帖

例子用个很简单的:
http://www.w3schools.com/js/tryit.asp?f ... g_infinite

把间隔设小一点就可以同其它浏览起对比。差别很大。之前在mozest提到那个百度知道回答文本框焦点更明显。
以前firefox跳个票的时间现在可以发布几个正式版了-_-
GOLF-AT
千年狐狸
千年狐狸
  • UID11611
  • 注册日期2006-02-20
  • 最后登录2019-12-30
  • 发帖数3239
  • 经验265枚
  • 威望1点
  • 贡献值260点
  • 好评度59点
  • 社区居民
  • 忠实会员
14楼#
发布于:2011-09-02 12:02
dindog:setTimeout/setTimeinterval 两个函数当间隔比较小时(如10ms)效率比主流所有浏览器都差得多(目测cpu占用率多4-20倍)。由Fx4到现在一点改进都没有回到原帖

这个没试过。
我自己是写程序的,在 Windows 下,当时间间隔小于 56ms 时,需要使用的函数不一样。间隔 >=56ms 时,使用 SetTimer 这个函数即可。自己写的代码执行的时间,大于时间间隔也没关系,只是导致一些事件跳过不会执行。比如:间隔为100ms,但是自己写的计时器函数需要200ms才能执行完,那么第100ms、300ms、500ms …… 时程序会收到 WM_TIMER 这个消息,但是 200ms、400ms、600ms …… 时的 WM_TIMER 消息会被抛弃。

当间隔小于 56ms 时,需要使用 timeSetEvent 这个函数。但是,使用函数 timeSetEvent 时,需要注意,自己写的计时器函数,代码执行的时间,必须小于间隔时间,否则就会一直累积,导致CPU使用率越来越高,最后程序崩溃。比如,时间间隔是 10ms,但如果自己写的函数代码需要 20ms 才能执行完,那么每过 10ms 自己写的函数就会被调用,但此时上次的调用还没执行完,所以函数就会同时被执行很多次。刚开始还好一些,时间稍微长一点,那么同一时间这个函数就会被同时执行很多次,导致CPU使用率非常高。10几年前的 Windows 98,连 Windows 98 都会被这样搞死。所以,此时就需要一些机制,当上一次的代码还没执行完时,这次执行时需要跳过,让函数调用很快就结束,才不会导致问题。
上一页
游客

返回顶部