mozilla 與三星開發下一代瀏覽器引擎

mozilla 使用Rust language 開發 servo (實驗性瀏覽器引擎名稱)
rust language 是由mozilla 跟熱心社群開發的安全性程式語言(開發了好幾年)
下一代瀏覽器引擎 servo 是從零開始為現代硬體打造的
支援多核心處理器,甚至HSA
雖然HSA是AMD主導,但mobile device 有很大影響力的ARM,PowerVR也在裡面
使用的back-end 是LLVM (最近好像開始很夯,也慢慢看到優於 gcc的地方)

應該會在安全性,性能上得到很大的改善

三星扮演的角色是 將rust 弄到ARM上,讓servo 可以在android上跑
https://blog.mozilla.org/blog/2013/04/0 … er-engine/
http://www.phoronix.com/scan.php?page=n … px=MTM0MjI

Gecko 也用了15年以上,該是砍掉重練的時候

8 種 HTML5 Canvas、Javascript測試

很炫的八種測試,可以試試看網頁瀏覽器有沒有支援跑得快不快

8 Simply Amazing HTML5 Canvas and Javascript Animations

Firefox 4.0 beta2

本來以為 Firefox 4.0 大概只有JägerMonkey有點看頭
其他的D2D,介面,app tab,WebM,WebGL 沒什麼

但後來發現了還有 Retained Layers,這個解決了FX長期以來的捲動bug

看原文上的說明,將現在FX的作法(每更改一次物件屬性就重新繪製)
改成把物件cache起來 屬性有變動直接更改cache的物件(不重新繪製這個物件)

scroll也類似如此,將網頁內容繪製好後 用offset方式呈現scroll的效果
以前的方式是像素平移(移動一個像素在繪製下一個)
FX 4.0 負責呈現這些效果的是GPU跟它龐大的frame buffer

而今天釋出的Firefox 4.0 beta 2 已經正式將Retained Layers放進來了
也把JägerMonkey放進來了

不過目前有些小bug 有時候字型會模糊掉 (有時候是清楚的)

Mozilla Firefox 4.0 beta 2
Mozilla Firefox 4.0 beta 2 release note

螞蟻測試

現在寫這篇似乎有點晚

Mozilla Summit 2010 的這個螞蟻測試充分表達TraceMonkey的缺點
只能trace簡單的數學function,附加上一些條件就會trace失敗

蟻模式算是TraceMonkey發揮maxium的狀態,但似乎還是比Google chrome慢
蟻模式可以算TraceMonkey 全部trace 失敗的狀況,實在慘不忍睹
(相對於Google Chrome,Safari 紅蟻模式速度沒有太大變化)

影片中也秀出當時(2010/7/7~7/9)JägerMonkey目前的成效
Tracemonkey 當時速度約為JägerMonkey的2倍快
(照印象中Are We Fast Yet!的數據應該也是如此)
JägerMonkey優點在於紅蟻模式,回家模式效能可以保持住

以現在來看JägerMonkey的效能的話 他已經可以跟上TraceMonkey了
但與Google Chrome,Safari 尚有近兩倍的效能差距

如果不加油一點解決JägerMonkey 效能bug 以及跟TraceMonkey整合的話
FX未來堪慮!

Tracemonkey + JägerMonkey = ?

首先回應一下標題 Tracemonkey+JägerMonkey=SpiderMonkey
而SpiderMonkey則是Firefox的Javascriopt Engine (如下圖)


Tracemonkey 為Firefox 3.5開始採用的JIT (Just In Time compiler)
但有個缺點就是Trace 失敗時,會採用舊的方式執行Javascript (而這個方式很慢)

JägerMonkey 就是要改良這個問題的solution
它採用Method JIT + nitro assembler( this one is from WebKit)

###############以上只是單純的介紹#####################
而今天會寫這篇主要是想大約估計一下 Firefox 4.0 Javascript 會有多快
參考資料:

以下這些純粹只是大略估計,有一些假設的前提不一定符合現實狀況
1.假設TraceMonkey 跟 JägerMonkey 為不相依互相獨立
2.所有Javascript 在TraceMonkey成功時的速度 約為 W/O JIT的9倍快
3.所有Javascript 在JägerMonkey 約為 W/O JIT的3倍快(現在為2.66倍)

然後開始列國中的方程式吧! (以下代數單位皆為ms)

x=tracemonkey,y=JägerMonkey,z=target
o=original tracemonkey,w=W/O JIT

x+y=z
x+3y=o (x+2.66y=o)
9x+3y=w (9x+2.66y=w)

從最新資料代入數據(w=1850.3 ,o=694),解答z
x=144.54  , y=206.56  , z=351.1
可以從這邊注意到TraceMonkey 只比 JägerMonkey 稍微快一點
(從參考資料內得知JägerMonkey還有30個左右的bugs會拖累速度 未來會繼續改進)
351.1就是目前合體後的速度,  已經趕上apple Google的速度(但差別不大)
########################################################

假設最後JägerMonkey的速度進步到跟apple, google 的速度一樣快時
(JägerMonkey 就真的是W/O JIT的三倍快)
x=144.54 , y=183.15 , z=327.69
用這個來畫未來合體之後的效能參考線看看

最下面綠色線就是TraceMonkey + JägerMonkey最為理想的速度

結論:TraceMonkey 沒有想像中厲害,只比 apple, Google快 23%(還以為是好幾倍)
由於spidermonkey裡面JägerMonkey消耗的時間就佔據了一半以上
這樣會大幅度削弱了TraceMonkey的23%優勢,整個spidermonkey 只快了10%
未來如果要更強的話只有增加TraceMonkey trace的成功率
(或者將TraceMonkey 不容易trace成功的轉向JägerMonkey)

orangeFox 3.6.3plugin1


orangeFox 3.6.3plugin1

http://www.mediafire.com/download.php?umhnanw5tyt
安全性版本更新 + Lorentz版
另外由於 flashplayer 10.1已經修正方塊字的問題,可以不用手動改字型
但flashplayer 10.1 沒有x86_64版本 所以就不附了
因為 x86_64版FX可以透過安裝nspluginwrapper使用flashplayer 10.1 32bit版本

Apply Patches
enable-x86_64-tracemonkey.patch
jemalloc-enable-pgo.patch

代碼:
–enable-application=browser –disable-tests –disable-crashreporter –disable-debug –disable-javaxpcom –disable-updater –disable-necko-wifi –disable-safe-browsing –disable-jsd –enable-application=browser ‘–enable-optimize=-O3 -fforce-addr -march=k8 -pipe -fomit-frame-pointer’ –enable-libxul –enable-jemalloc –enable-profile-guided-optimization

install 10.1 flashplayer on x86_64


這個方法是之前flashplayer沒有64-bit版時支援flash的方法
因為flashplayer 10.1修正了10.0的方塊字bug,但是10.1沒有x86_64版
所以把以前的東西搬出來用
更多

Previous Older Entries