Re: [-Fx-] Firefox 22 正式版用戶特性速覽
※ 引述《kuro (クロ)》之銘言:
: FW: http://blog.skeeterhouse.com/9963.html 蚊仔部屋
: Firefox 22.0 終於和我們見面了,這個版本最重要的特性之一便是 asm.js(代號
: OdinMonkey)的引入,利用它可以大幅加快 javascript 的性能。讓我們一起來看
: 看 Firefox 22.0 正式版的用戶特性吧。
: 一、默認開啟 WebRTC
: 之前我們已經介紹過了 WebRTC 技術,它是一項面向未來的 HTML5 技術,允許用戶直
: 接通過網頁實現實時通信,跨平台且無需額外插件。例如,可直接無需插件利用攝像
: 頭、麥克風進行通話。在最新的 Firefox 當中,這項功能已經默認開啟了,與之有關
: 的 about:config 參數即:
: media.peerconnection.enabled
: 需要為 true
: 更詳細介紹請參見:WebRTC comes to Firefox
: https://hacks.mozilla.org/2013/06/webrtc-comes-to-firefox/
: 二、在高分辨率模式下自動放大文字和界面
: Firefox(Windows 平台)原先在高分辨率顯示模式下不會自動調整文字和界面縮放以
: 適應高分辨率,造成文字顯示太小。現在 Firefox 會自動調大文字和界面,與此有關
: 的 about:config 選項為:
: layout.css.devPixelsPerPx
: 默認為 -1,如要增大文字,將其調整為 1.0 或更大的值,如要減小,調整為 0.05
: 到 1.0 之間的值。
: 三、啟用 OdinMonkey(asm.js)以提高 Javascript 性能
: OdinMonkey 是一個新的優化 Javascript 編譯速度的編譯器(asm.js 編譯器),
: 具體來說是一個底層的、專為 JavaScript 子集優化的即時編譯器。為何說它能提
: 高 js 編譯性能?簡單來說,如果一個程序是用 C++ 編寫的,那麼利用 asm.js,
: 它可以直接編譯為 javascript 代碼,而不需要先編譯為比 C++ 更底層一些的代碼。
: 這麼做的好處就在於大幅提高 Javascript 性能,瀏覽器運行富媒體網頁,乃至 3D
: 網頁遊戲將更加流暢。
: 在about:config 需保證
: javascript.options.asmjs
: 為 true
這邊有誤解,因為 OdinMonkey 並不是新的即時編譯器(JIT Compiler)。
會造成這種誤解的原因,大概是因為前幾次都叫某某 SomethingMonkey,
所以有些人誤以為這次的 OdinMonkey 也和以前一樣。
傳統上來說,高階語言轉換為低階語言的方式分為兩種,
一種為直譯(interpret),另一種為編譯(compile)。
即時編譯(JIT compilation)則是介於直譯式與編譯式之間。
而 asm.js 顧名思義,是以成為 javascript 界的組合語言為目標。
asm.js 並不是一個新的語言,而是 javascript 的完全子集。
某種程度上,它是被人「發現」的,而不是發明出來,就像 JSON 一樣。
JSON 也同樣是 javascript 的子集,完全符合 javascript 語法。
雖然 asm.js 程式碼長得完全不像是人類手寫出來的 javascript,
不過仍然完全符合 javascript 語法,所以可以用現有瀏覽器來執行。
> 如果一個程序是用 C++ 編寫的,那麼利用 asm.js,它可以直接編譯為
> javascript 代碼,而不需要先編譯為比 C++ 更底層一些的代碼。
這段話有點不知道在講什麼,因為目前的 C-to-asm.js compiler,
確實需要「先編譯為比 C/C++ 更底層的代碼」。
目前的實作是利用現在很紅的編譯器基礎設施 LLVM 作為中介,
先將 C/C++ 編譯為 LLVM 的中介碼 LLVM IR,
然後再將 LLVM IR 編譯為 asm.js。
這段流程完成之後,我們會得到 asm.js 的程式檔(不是執行檔)。
把某個語言編譯為 Javascript,並非是全新未曾有過的概念,
已經有一些前人實際做過這類的事情,並且把這種技術用在實際的用途。
比如說 Google 的 GWT,就包括了一個 Java-to-javascript 編譯器。
那麼,我們跑完上述流程,拿到一個程式檔,我們要如何執行它呢?
很簡單,你拿到的程式檔,其實就是一個 javascript 程式檔,
所以就像以往一樣把它丟給瀏覽器,就可以跑了。
這也就是說,原本用 C/C++ 所寫的程式碼,可以在瀏覽器中執行。
可以跑,是一回事。跑多快,是另一回事。
OdinMonkey 這次的最佳化,也就是針對這些 C/C++ 轉換過來的程式碼。
asm.js 程式碼採用 Ahead-of-time 編譯為機器碼,藉此加快執行速度。
因此,它不會是 Just-in-time,而 OdinMonkey 也就不會是 JIT。
OdinMonkey 使用的仍然是原有的 JIT(目前的 JIT 叫做 IonMonkey)。
--
※ ○○○ ○◎ ○※ ◎ ○ ○ ※◎ ◎ ◎◎※ ◎◎※ ◎ ◎○ ○※
荻 南新東 新中 西新 新丁 新苑 四丁 四赤 國事 霞銀東 大淡御 本丁 後茗 新池
窪 阿高高 中野 新宿 宿目 宿前 谷目 谷坂 會堂 關座京 手路茶 鄉目 樂荷 大袋
01 佐圓圓 野坂 宿08 三09 御10 三11 12見 議前 151617 町町之 三21 園谷 塚25
谷寺寺 05上 07 附 14 1819水 2223 24
020304 06 丸之內線 13 20
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.37.139.4
→
07/08 00:19, , 1F
07/08 00:19, 1F
推
07/08 00:20, , 2F
07/08 00:20, 2F
推
07/08 00:47, , 3F
07/08 00:47, 3F
推
07/08 01:01, , 4F
07/08 01:01, 4F
推
07/08 08:14, , 5F
07/08 08:14, 5F
→
07/08 08:15, , 6F
07/08 08:15, 6F
→
07/08 08:15, , 7F
07/08 08:15, 7F
推
07/08 10:23, , 8F
07/08 10:23, 8F
→
07/08 10:23, , 9F
07/08 10:23, 9F
→
07/08 11:36, , 10F
07/08 11:36, 10F
→
07/08 11:38, , 11F
07/08 11:38, 11F
推
07/08 13:41, , 12F
07/08 13:41, 12F
→
07/08 13:42, , 13F
07/08 13:42, 13F
→
07/09 05:22, , 14F
07/09 05:22, 14F
推
07/09 08:39, , 15F
07/09 08:39, 15F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):