Re: [-Fx-] Firefox 4,我們可以期待些什麼?
嗯... 來賣弄一下最近研究的心得吧XD(誤) !警告,本篇內含淺量技術內容!
首先,現在的引擎都使用上JIT了(just-in-time即時編譯,見http://goo.gl/uH0q)
但其中,WebKit核心的Safari/Chrome所運用的,是叫做「method JIT」的方法,
而Firefox則是使用自己研究出來的「tracing JIT」。(好樣的!)
這兩種處理方法有什麼不同呢?
Firefox現在所使用的JavaScript引擎叫做「TraceMonkey」,
是最初的「SpiderMonkey」的改進版,(Safari的則是叫「Nitro」,Chrome是「V8」)
它對比於舊版最大的進步,就是採用了所謂的「tracing」技法!
Tracing的作用,大致上就是會沿著JavaScript碼去看,當遇到迴圈等複雜架構時,
會將它拆開來處理,再牽涉到阿哩阿扎一些東西以後,整體效能就提昇了!
另一方面,method JIT則是把那個函式(function,或"method")直接整堆送進去,
所以method的速度上,當然沒有tracing快。
等等... 你是說沒有tracing快嗎?= =a
是的!Firefox的TraceMonkey其實是個很強大的玩意吶!
那... 為什麼目前為止我們所看到的,卻是Chrome/Safari把Firefox打趴呢?
原因很簡單,因為,不是每句code都是可以trace的...囧
遇到可以trace的code的時候,tracing絕對打趴懶人法method,
但是如果trace到最後卡住了(遞迴函式,或有夠骯髒的複雜code,或根本不適用等等),
那下場就非‧常‧難‧看了。
Tracing失敗以後,Firefox處理那段code的方法,就變成把它直接丟到老扣扣的直譯器去
結果就是效能會衰弱到2007年左右的瀏覽器的程度(FF3.5、Safari4、Chrome出來之前...
所以少部分的效能增加+大部分的效能大減=輸了!(我不是在說世足賭盤... = =)
解法?火狐四‧〇為您隆重呈現,新一代「JägerMonkey」!(名字看起來就很威...@@)
簡單來說,JägerMonkey的目標,就是先提昇Firefox處理一般函式的method速度,
理想的話,光這點就有潛力可以大幅接近Safari/Chrome,
還沒完咧!趕上以後再以祖傳tracing大法加持!一舉攻下JavaScript寶座吼吼!
欸... 聽起來好像不太可能嗎?那讓我帶大家追一下現在的進度吧~
首先,請大家造訪一下這個網頁:http://www.arewefastyet.com/
哇嗚,眼花撩亂了?不過一開始會注意到的,一定是那條直直往下衝的黑線吧。
但是要先請大家看一下淺藍色的,名叫「moz method JIT」的線,
沒錯,這就是Firefox舊版的method引擎,當下面還滿快的橘色線tracing失效時,
火狐就瞬間掉回阿公級速度,正負加起來當然不夠快!這怎麼行呢?
所以團隊現在呢,就是在對method做最佳化,目前採用了一個叫「FatValue」的方法,
也就是那條「moz fv method JIT」黑線,從圖中可以看到成果相當令人驚嘆!
從採用開始到現在短短兩個禮拜間,它已經一路下殺到近逼tracing JIT的速度了!
等愈來愈多的最佳化加入以後,再加上tracing及其他的改進,待正式版推出以後,
「So fx4 has TM+JM-w/fatvals-and-maybe-some-static-analysis magic thrown in.」
這麼多改進的融合,說不定火狐真的又可以,再一次的穩坐瀏覽器龍頭寶座~(灑花)
還是覺得不太可能嗎?
沒關係!我也還有點懷疑...XDD 不過看著趨勢線每天往下掉,
還真是有種莫名的快感啊 = =
說實在的,除了IE真的是已經被我私心唾棄已久了以外,其他各家瀏覽器的處理速度上,
一般使用其實都已經夠快了,所以JavaScript引擎有一大部分是跟測試跑出來的分數,
到底好不好看有關... (它就是會影響市場,沒辦法)
然而除了JavaScript加速以外,整體執行速度也一定是會提昇的,
再加上許多許多未來的新功能及增強,我相信Firefox 4.0一定是值得等待的 >///<!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.245.202
推
06/30 05:03, , 1F
06/30 05:03, 1F
※ 編輯: SicInfit 來自: 140.112.245.202 (06/30 06:20)
推
06/30 07:05, , 2F
06/30 07:05, 2F
推
06/30 07:46, , 3F
06/30 07:46, 3F
推
06/30 07:50, , 4F
06/30 07:50, 4F
推
06/30 08:54, , 5F
06/30 08:54, 5F
→
06/30 08:54, , 6F
06/30 08:54, 6F
推
06/30 09:51, , 7F
06/30 09:51, 7F
→
06/30 09:52, , 8F
06/30 09:52, 8F
→
06/30 10:45, , 9F
06/30 10:45, 9F
推
06/30 11:45, , 10F
06/30 11:45, 10F
推
06/30 11:53, , 11F
06/30 11:53, 11F
推
06/30 12:40, , 12F
06/30 12:40, 12F
→
06/30 12:59, , 13F
06/30 12:59, 13F
→
06/30 13:22, , 14F
06/30 13:22, 14F
→
06/30 13:24, , 15F
06/30 13:24, 15F
→
06/30 13:24, , 16F
06/30 13:24, 16F
推
06/30 13:45, , 17F
06/30 13:45, 17F
推
06/30 13:54, , 18F
06/30 13:54, 18F
→
06/30 13:55, , 19F
06/30 13:55, 19F
推
06/30 15:45, , 20F
06/30 15:45, 20F
推
06/30 16:54, , 21F
06/30 16:54, 21F
推
06/30 17:21, , 22F
06/30 17:21, 22F
推
06/30 17:51, , 23F
06/30 17:51, 23F
推
06/30 18:25, , 24F
06/30 18:25, 24F
推
06/30 18:35, , 25F
06/30 18:35, 25F
推
06/30 18:52, , 26F
06/30 18:52, 26F
推
06/30 22:22, , 27F
06/30 22:22, 27F
推
07/01 16:13, , 28F
07/01 16:13, 28F
→
07/01 19:48, , 29F
07/01 19:48, 29F
→
07/01 19:49, , 30F
07/01 19:49, 30F
推
07/02 00:51, , 31F
07/02 00:51, 31F
→
07/02 01:34, , 32F
07/02 01:34, 32F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 2 之 3 篇):