在過去兩年,幾乎Chrome、Edge兩家瀏覽器的口水戰都少不了,每次講到比執行效能、耗電量等等議題的時候,幾乎都會「順便」將Firefox放在一起,而且每次Firefox總是陪榜的份。不過,現在排序可能要重新洗牌了,前幾天Firefox已經正式發表了Firefox 54版並且開放下載,官方表示速度將要比Chrome、Edge、Safari等瀏覽器都要來得快。 Firefox 54版是第一個支援多內容處理程序(multiple content processes)的Firefox版本,並兼顧效能及資源管理。而這個版本為什麼重要,以下是 官方部落格的說明:
記憶體對瀏覽器的影響你的瀏覽器所使用的記憶體所造成的影響,不只會影響了你在瀏覽網頁時的體驗,同時也會影響你在電腦中使用其它APP的體驗。如果一個瀏覽器佔用了太多的記憶體,你的電腦就沒有足夠的記憶體空間去執行其它程式,因此,你就會發現你開啟某些程式的時候會出現卡頓的現象,甚至慢到無法開啟。 反過來說,如果一個瀏覽器分配給他用的記憶體太少,那麼他打開網頁的時候,可能就會造成你開啟每一個網頁都覺得速度太慢,卡卡的。因此,有所謂的「Goldilocks 原則」,這個原則建議瀏覽器佔用記憶體要「剛好」,選擇一個適中的量,只要記憶體足夠到快速執行瀏覽網頁,也不要佔用多到耗用你的電腦資源。
▲電腦記憶體與執行速度的關係。 但是,這樣的原則說起來簡單,做起來談何容易?目前所有的瀏覽器幾乎都面臨了相同的問題。
程式的構成要素一個應用程式的構成要素有兩個:程序(processes)與執行緒(threads)。 當你執行一個程式,它會開始執行一個程序,這個程序的執行,伴隨著很多執行緒的執行,這些執行緒都分享相同的工作記憶體。程序通常會給予執行緒不同的優先權,去掌握不同類型的工作。 例如,用來繪出應用程式的介面的執行緒通常會有比較高的優先權,因為你在執行一個應用程式的時候,都是先看到介面才能進行操作。而其它比較低優先權的執行緒,這時就先抓著資料等在系統的背景,等高優先權的執行緒執行完畢再來執行。你可以打開Windows的工作管理員,看到目前電腦正執行的程序有哪些。(macOS叫活動監視器Activity Monitor)
有時,一個程序並不是去啟動一個執行緒,而是去啟動另外一個程序。因此,你可以預想到,這樣的作法將會需要用到更多的記憶體以及電腦的效能。因此,大多數的程式,都執行一個單一的程序,但是會使用多執行緒。 不過,瀏覽器不像「大多數」的程式。
我們可以看到,在上圖中,左邊的音樂播放器、文字編輯器、影像編輯器等三個,都是一個程序(黑色虛線框框),裡面有很多執行緒(白色線條)在跑的狀況。而右邊的瀏覽器,則是一個瀏覽器打開了很多的分頁,每一個分頁都是一個程序,裡頭伴隨著無數的執行緒。
現代的網路,為什麼需要多程序的瀏覽器比較過去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 設定的數目。而他們也會在後續的版本,直接將這個修改數量放在設定中讓一般使用者可以調整。
|