Firefox 54:史上最棒的一次改版!首次採用多內容處理程序,效率快、記憶體耗用比 Chrome 低

作者 | 發布日期 2017 年 06 月 20 日 13:28 | 分類 網路 , 軟體、系統 follow us in feedly

過去兩年,幾乎 Chrome、Edge 兩家瀏覽器的口水戰少不了,每次講到比執行效能、耗電量等議題,幾乎都會「順便」將 Firefox 放在一起,而且每次 Firefox 總是只有陪榜的份。不過,現在排序可能要重新洗牌了。前幾天 Firefox 正式發表了 Firefox 54 版並開放下載,官方表示速度將比 Chrome、Edge、Safari 等瀏覽器都快。



Firefox 54 版是第一個支援多內容處理程序(multiple content processes)的 Firefox 版本,並兼顧效能及資源管理。這個版本為什麼重要,以下是官方部落格的說明:

記憶體對瀏覽器的影響

你的瀏覽器使用的記憶體造成的影響,不只有你瀏覽網頁時的體驗,同時也有使用其他 App 的體驗。如果瀏覽器佔用太多記憶體,電腦就沒有足夠空間執行其他程式,因此你會發現開啟某些程式時出現累格,甚至慢到無法開啟。

反過來說,如果一個瀏覽器分配到的記憶體太少,那麼打開網頁時,會造成每個網頁速度都太慢,卡卡的。所謂的「Goldilocks 原則」建議瀏覽器佔用記憶體要「剛好」,選擇適中的量,只要記憶體足夠快速執行瀏覽網頁,也不要佔用你的電腦資源。

▲ 電腦記憶體與執行速度的關係。

但是,說起來簡單,做起來談何容易?目前所有瀏覽器幾乎都面臨相同的問題。

程式的構成要素

一個應用程式的構成要素有兩個:程序(processes)與執行緒(threads)。

當你執行一個程式,會開始執行程序,伴隨很多執行緒的執行,這些執行緒都分享相同的工作記憶體。程序通常會給予執行緒不同的優先權,掌握不同類型的工作。

例如,用來繪出應用程式介面的執行緒通常會有比較高的優先權,因為你在執行一個應用程式時,是先看到介面才能操作。其他較低優先權的執行緒,這時就先抓著資料在背景等,等高優先權的執行緒做完再執行。你可以打開 Windows 工作管理員,看到目前電腦正執行的程序有哪些(macOS 叫活動監視器 Activity Monitor)。

有時,一個程序並不是啟動一個執行緒,而是啟動另外一個程序。可以預想這樣會用到更多記憶體以及電腦效能。因此大多數程式都執行單一程序,但會使用多個執行緒。

不過,瀏覽器不像「大多數」程式。

我們可以看到,上圖左邊的音樂播放器、文字編輯器、影像編輯器等 3 個,都是單一個程序(黑色虛線框框),裡面有很多執行緒(白色線條)在跑。右邊的瀏覽器,則是一個瀏覽器打開很多分頁,每個分頁都是一個程序,裡面又有無數執行緒。

現代網路,為什麼需要多程序瀏覽器

比較過去 Firefox 於 2004 年發表時的 Web,那時所謂的 Web 可能只是一些文件放在網路上,但是隨著時間發展,現在 Web 已變成一個平台,不只用來顯示靜態文件,還可以提供互動程式功能,像是 EMAIL、文書處理、社群服務這些 Web 應用程式,你都會在瀏覽器上實現。

而隨著 Web 新時代來臨,使用者也期待 Firefox 或其他瀏覽器,能夠像 Windows 或 Mac 系統可同時啟動不同應用程式,快速打開多個 Web 應用程式。不過對瀏覽器廠商來說,很難做到。

解法是什麼?解法就是瀏覽器必須要學習用作業系統的方式運作,使用多程序來執行不同的 Web 應用程式。

隨著多程序架構,你會發現,當你在一個分頁觀看一個網頁時,這個分頁不幸當掉,這時切換到另一個分頁,那個分頁的內容你還是可以點選,並不會一個分頁當掉導致整個瀏覽器全當。

過去,Mozilla 工程師雖然了解多程序架構的可行性,但把 Firefox 改為多程序架構卻會影響到單程序架構運作的 Firefox 附加元件(Add-On),所以 Firefox 遲遲不敢改為多程序架構。相對的,Chrome 在設計的時候就採用多程序架構。

為什麼 Chrome 會過熱 Firefox 卻不會

最新釋出的 Firefox 54 和 Chrome 一樣採用多處理程序,但 Chrome 吃掉太多電腦記憶體也是有名的,因此, Firefox 54 希望避免這個問題。

Firefox 54 採用折衷辦法。Chrome 如果開啟 10 個分頁,就會開啟 10 個程序,吃掉 10 個程序記憶體,這是導致它耗用那麼多記憶體的原因。而 Firefox 54 是針對打開的分頁,最多只開啟 4 個程序。當你打開第 5 個分頁,就會使用前面 4 個程序的執行緒,控制消耗的記憶體。

為什麼是 4 個?Firefox 團隊表示,因為這是他們評估對 Firefox 使用者較恰當的數量。一般 8GB 記憶體的電腦,用了 4 個程序的情況下,還有足夠的資源跑其他程式。

此外,如果電腦 RAM 超過 8GB,或許想讓 Firefox 啟用更多內容處理程序,Firefox 表示現階段可在網址列輸入 about:config 後,調整 dom.ipc.processCount 設定的數目。他們也會在後續版本直接將這個修改數量放在設定,讓一般使用者自己調整。

(本文由 T客邦 授權轉載;首圖來源:Firefox