2008年3月3日

Firefox 3 終極特色:效能

Firefox 3 到目前為止的測試版本已經有一大堆的新功能和既有功能的加強,而現在 Firefox 3 Beta 4 則在效能上有一系列的增進。我也終於完成一組測試,比較 Firefox 3 和 Firefox 2 兩者的效能差距。

JavaScript

就如大家所知,隨著我們開始使用網路應用程式來替代本機端程式,JavaScript 變得越來越重要。對開發者來說,JavaScript 是開發網路應用程式最重要的語言,它除了可以針對網頁上的元素進行各種操控,在必要時還可以向伺服器索取資料。

比起其他瀏覽器,JavaScript 對 Firefox 來說更加的重要,因為他的整個介面(包含擴充套件的介面)都是使用 JavaScript 來執行:右鍵選單、目錄、標籤頁、視窗,甚至在底層還利用 JavaScript 來進行網路連線。

Firefox 3 beta 4 將近有 Firefox 2 三倍的快,Firefox 3 beta 3 的兩倍快,甚至超越 Opera 9.5 beta 和 Safari 3.0.4 beta 成為了執行 JavaScript 最快的瀏覽器,這些數據是根據 SunSpider 這個由 WebKit 所設計的 JavaScript 效能測試工具。

SunSpider test results

當然,沒有任何一個效能測試工具是完美的,任何一個 JavaScript 引擎都可能在特定的效能測試中表現得比其他的好。工程師也可能針對特定的測試來調整他們的程式。但是我認為,只要該測試設計的夠好,能正確反映出對於使用 者最重要部份的效能,那麼做這樣的調整更可以讓系統往好的方向發展。我也很樂意進行更多更好的 JavaScript 效能測試來比較 Firefox 2 和 Firefox 3。

記憶體使用量

Firefox 2 以吃記憶體多而聞名,更惱人的是即使不動它,它也會偷偷蠶食記憶體...。

因此我設計了一個簡單的測試,使用 Windows XP2 瀏覽九個網站。用全新的個人設定並不設首頁,並使用 Windows Task Manager 來衡量效能。這組測試包含了瀏覽幾個簡單的網頁,接著開啟一些較複雜的網頁,當然原本的簡單網頁不會關掉,接著關閉一些分頁並看看程式釋放了多少記憶體,然後閒置一小時再看看又消耗了多少。

以下是這組瀏覽測試的過程:

1. 連到 The New York Times,點擊 Technology 區,開啟兩篇文章
2. 連到 Digg,看最新書籤,並進到第二三頁
3. CNET News,點擊最新的三篇文章,當新頁面讀取完後,使用上一頁回到首頁
4. 為了確保 i18n 的支援,我又連到俄文和
5. 中文的維基百科,接著點擊側邊欄的第一個連結,網頁讀取完後回到首頁

A. 在這裡進行第一次測量

6. 連到 YouTube video,觀賞影片,並且從右邊的相關影片中再挑一個看
7. 接著我登入 Gmail,寄一封附加兩個大圖檔的信件給自己,並且開啟這封信
8. 我又用 Google Docs 建立一個新的文件,寫入一個五個詞的句子,設為粗體並置中,接著加入一個 20k 的 gif 圖檔並儲存這分文件
9. 連到 Netvibes,瀏覽所有的預設分頁,修改網頁標題並加入一個簡短的項目的待辦清單中

B. 在這裡進行第二次測量

10.關掉 YouTube 和 NetVibes,等 20 秒讓 Firefox 釋放記憶體

C. 在這裡進行三次測量

12. 讓分頁保持開啟狀態閒置一小時

D. 在這裡進行最後一次測量

結果:

Measure Firefox 2.0.0.12 Firefox 3 Beta 3
A. 瀏覽一般網頁
73 MB 80 MB
B. 瀏覽 Web 2.0 網站 149 MB 135 MB
C. 關掉 YouTube 與 Netvibes 網頁 142 MB 123 MB
D. 閒置一小時後
181 MB 123 MB

如你所見的,Firefox 3 在記憶體管理上表現的更好,在分頁關閉後,它便會將記憶體釋放出來,程式閒置時也不會一直吃記憶體。

這項測試並不能包含所有狀況,根據你的使用習慣,你可能會同時開啟更多或更少的分頁。並且隨著安裝各種擴充套件、開啟關閉視窗/分頁,記憶體用量也會漸漸增加。因此這是個僅供參考的非正式實驗,重要的是可以從中瞭解到 Firefox 3 在記憶體管理上的進步。

開啟速度

我使用簡單的方法來測試 Firefox 程式開啟所需要的時間,先建立一個 batch 檔,它會紀錄執行時的時間,瀏覽器的部份則是將首頁指到一個簡單的網頁,網頁內有一行 JavaScript 會顯示網頁開啟的時間,兩個時間相減就可以得到瀏覽器開啟所需要的時間了。

每次測試前我都會將我的筆電重新開機,確保所有的暫存檔都清空,測試完一次後將瀏覽器關閉再重開一次,好知道作業系統的暫存加速有多少效果。結果初次開啟花了 10 秒鐘,之後的重新開啟只需要 4 秒鐘,當然還有些誤差,不過是使用者不會感覺到的差距了。

其它

從今天開始,Firefox Windows 版的 nightly build 將會支援 PGO(profile guided optimization),在第一次編譯完成後,會有另一個監控程式來紀錄編譯出來的 Firefox 檔案的運作狀況,接著根據這些紀錄,再進行一次最佳化的編譯。

負責領導 Mozolla 團隊導入 PGO 的 Ted Mielczarek 說在導入 PGO 後,在部份效能測試上有了 10% 的效能提昇,Linux 版在 Beta 4 之後也會支援 PGO,Mac OSX 版則可望在正式版釋出前加入。

另一項效能上的提昇則要感謝 Vladimir Vukicevic 發現 Mac OSX 上沒有公開的 API,這項發現讓 Firefox 能不必枯等程式繪製網頁。

Firefox 3 Beta 4 將會在兩週後釋出。

(原文othree 翻譯,alicekey 校稿)

      7 則留言:

      1. OSX未公開的api?好像是這件事 http://fred.ipod.to/blog/?post;1427。

        回覆刪除
      2. 有錯字:
        「它除了可以針對往頁上的元素進行各種操控」
        是「網頁」吧!

        回覆刪除
      3. 錯字:
        7. 接著我登入 Gmail,寄一封附加兩個大圖檔的信件給自己,並切開啟這封信

        結果初次開啟花了 10 秒鐘,之後的重新開豈只需要4秒鐘

        回覆刪除
      4. 抱歉抱歉,讓大家抓到這麼多錯字,已經修改。

        回覆刪除
      5. 記憶體管理項目是不是加入其他瀏覽器的成績比較客觀?否則跟管理效能不佳的fx2相比看不出真實效能!

        回覆刪除
      6. 真的好期待喲!!!

        我愛用FIREFOX但是真的慢了一點

        偶爾就用用FLOCK

        回覆刪除